好吧,我一直绞尽脑汁,用各种方法尝试这种方法,但我一直在努力。我甚至尝试使用Angular来执行嵌套的ng-repeats来过滤我需要的属性但是资源太重了。
我要做的是查找“groups”数组中每个对象的“indices”值,并通过将索引与“indices”值匹配,在“person”数组中找到相应的对象,然后将该值推送到'groups'数组中的相应对象。
我只是在从api返回响应时尝试在JavaScript中执行此操作。
以下示例:
var obj = {
"groups": [
{
"name": "GroupA",
"indices": [
0
]
},
{
"name": "GroupB",
"indices": [
1
]
},
{
"name": "GroupC",
"indices": [
2,
3
]
}
],
"person": [
{"name": "Archer"},
{"name": "Lana"},
{"name": "Mother"},
{"name": "Barry"}
]
};
这就是我想要的最终对象:
var obj = {
"groups": [
{
"name": "GroupA",
"indices": [
0
],
"person": [
{"name": "Archer"}
]
},
{
"name": "GroupB",
"indices": [
1
],
"person": [
{"name": "Lana"}
]
},
{
"name": "GroupC",
"indices": [
2,
3
],
"person": [
{"name": "Mother"},
{"name": "Barry"}
]
}
]
};
答案 0 :(得分:2)
我会使用forEach
作为外部循环,而不是map
,但这不仅仅是一种风格问题:
obj.groups.forEach(g => g.person = g.indices.map(i => obj.person[i]))
var obj = {
"groups": [
{
"name": "GroupA",
"indices": [0]
},
{
"name": "GroupB",
"indices": [ 1 ]
},
{
"name": "GroupC",
"indices": [2,3 ]
}
],
"person": [
{"name": "Archer"},
{"name": "Lana"},
{"name": "Mother"},
{"name": "Barry"}
]
};
obj.groups.forEach(g => g.person = g.indices.map(i => obj.person[i]))
console.log(obj.groups)