[英]How to add a 'key': 'value' pair to a nested array of objects where the 'value' iterates over a different array?
我有一个像这样的对象数组,其中可以有更多或更少的项目:
arrOfItems = [
{
"type": "apple",
"earth: "blue"
}
{
"type": "orange",
"attrs": {
"id": 21,
"data": "RET",
"data2": null,
"order": null,
"order2": null,
"type": "property",
"char": "@"
}
},
{
"type": "apple",
"earth: "green"
},
{
"type": "apple",
"earth: "yellow"
},
{
"type": "orange",
"attrs": {
"id": 28,
"data": "EMC",
"data2": null,
"order": null,
"order2": null,
"type": "property",
"char": "@"
}
},
]
数组内的每一项都有一个结构。 因此,如果“type”=“apple”,则将添加另一个键“earth”。 如果“type”=“orange”,则会添加另一个键“attrs”,其结构如下:
"attrs": {
"id":,
"data": "",
"data2": null,
"order": null,
"order2": null,
"type": "",
"char": ""
}
对于类型为“orange”的每个项目,我如何向 attrs 对象添加一个键“类”,其中该键被分配给以下数组中的一个项目:
arrOfProps = ["prop_1", "prop_2", "prop_3", "prop_4" "prop_5", "prop_6"]
例如,基于上面的 arrOfItems,我如何获得以下内容:
arrOfItems = [
{
"type": "apple",
"earth: "blue"
}
{
"type": "orange",
"attrs": {
"class": "prop_1",
"id": 21,
"data": "RET",
"data2": null,
"order": null,
"order2": null,
"type": "property",
"char": "@"
}
},
{
"type": "apple",
"earth: "green"
},
{
"type": "apple",
"earth: "yellow"
},
{
"type": "orange",
"attrs": {
"class": "prop_2",
"id": 28,
"data": "EMC",
"data2": null,
"order": null,
"order2": null,
"type": "property",
"char": "@"
}
},
......... For the next item with "type": "orange", we have "class": "prop_3", etc.
]
到目前为止,我有:
arrOfItems.forEach( element =>
if(element.type === "orange") {
obj.attrs["class"] = arrOfProps[??];
}
)
但是我不确定如何更进一步。 有人会有什么想法吗?
你可以简单地迭代这个,同时跟踪分配的道具:
const arrOfItems = [ { type: 'apple', earth: 'blue' }, { "type": "orange", "attrs": { "id": 21, "data": "RET", "data2": null, "order": null, "order2": null, "type": "property", "char": "@" } }, { type: 'apple', earth: 'green' }, { type: 'apple', earth: 'yellow' }, { "type": "orange", "attrs": { "id": 28, "data": "EMC", "data2": null, "order": null, "order2": null, "type": "property", "char": "@" } }, ] const arrOfProps = ["prop_1", "prop_2", "prop_3", "prop_4", "prop_5", "prop_6"]; let nextProp = 0; for (const element of arrOfItems) { if (element.type !== 'orange') continue; element.attrs.class = arrOfProps[nextProp++]; } console.log(arrOfItems);
当然,如果你的橙子比arrOfProps
元素arrOfProps
,那么class
将被分配给undefined
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.