js循环处理数据的问题
{ "Statement": [
{
"Condition": {
"IpAddress": {
"SSc:SourceIp": [
"4.4.4.4"
]
}
}
},
{
"Condition": {
"IpAddress": {
"SSc:SourceIp": [
"2.2.2.2"
]
},
"StringEquals": {
"SSc:RequestHeader": [
"1.1.1.1"
]
}
}
}
]
}
请问怎么把以上数据处理成
{ Condition: {
{
"nameValue": "SSc:SourceIp",
"operateValue": "IpAddress",
"keyValue": "4.4.4.4"
}
},
Condition: {
{
"nameValue": "SSc:SourceIp",
"operateValue": "IpAddress",
"keyValue": "2.2.2.2"
},
{
"nameValue": "SSc:RequestHeader",
"operateValue": "StringEquals",
"keyValue": "1.1.1.1"
}
}
}
?谢谢大佬们
回答:
首先,不能处理成
js">{ Condition: { },
Condition: {
{ }
{ }
}
}
- 一个对象里不能有两个
Condition
,如果是对象字面量,只有后面这个生效 - 对象里不能保存对象列表(第二个 Condition 中的内容),只能用数组
所以,我猜你其实想要的是
{ Condition: [
{ },
{ },
{ }
]
}
这样的话
// 假设源数据由 origin 引用const result = origin.Statement.flatMap(({ Condition: it }) =>
Object.entries(it)
.flatMap(([operateValue, v]) => Object.entries(v)
.flatMap(([nameValue, ipList]) => ipList.map(keyValue => ({
nameValue,
operateValue,
keyValue
})))
)
);
结果
[ {
nameValue: 'SSc:SourceIp',
operateValue: 'IpAddress',
keyValue: '4.4.4.4'
},
{
nameValue: 'SSc:SourceIp',
operateValue: 'IpAddress',
keyValue: '2.2.2.2'
},
{
nameValue: 'SSc:RequestHeader',
operateValue: 'StringEquals',
keyValue: '1.1.1.1'
}
]
以上是 js循环处理数据的问题 的全部内容, 来源链接: utcz.com/p/937451.html