js循环处理数据的问题

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: {

{ }

{ }

}

}

  1. 一个对象里不能有两个 Condition,如果是对象字面量,只有后面这个生效
  2. 对象里不能保存对象列表(第二个 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

回到顶部