我有一个 javascript 对象数组,其中有一个属性以另一个数组作为值,如下所示:
var data = [
{
id: 1,
parent: [1,2,3,4]
},
{
id: 2,
parent: [5,6,7,8]
}
]
我正在尝试拆分它,因此每个具有多个父对象的对象都会获得其自身的副本,每个副本都有不同的父对象。到目前为止我已经这样做了:
var updateddata = JSON.parse(JSON.stringify(data));
for (var i = 0; i < updateddata[i].parent.length; i++) {
while (updateddata[i].parent.length > 1) {
updateddata.push({
id: updateddata[i].id,
parent: updateddata[i].parent[0]
})
updateddata[i].parent.shift()
}
}
它工作完美,除了在执行 console.log(JSON.stringify(updateddata))
时我可以看到前两个条目的父项是一个包含一个数组的数组入口,不像其他的,它们已经在数组之外:
这是 updateddata
的 console.log
:
[
{"id":1,"parent":[4]},
{"id":2,"parent":[8]},
{"id":1,"parent":1},
{"id":1,"parent":2},
{"id":1,"parent":3},
{"id":2,"parent":5},
{"id":2,"parent":6},
{"id":2,"parent":7}
]
我也曾尝试在值中使用 .toString()
,但没有任何区别。
我该如何解决?
最佳答案
你可以用 reduce()
和 forEach()
循环来做到这一点
var data = [{
id: 1,
parent: [1, 2, 3, 4]
}, {
id: 2,
parent: [5, 6, 7, 8]
}]
var result = data.reduce(function(r, ar) {
ar.parent.forEach(function(e) {
r.push({id: ar.id, parent: e});
});
return r;
}, []);
console.log(result)
关于javascript - 拆分数组仍然是一个项目的数组而不是一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38973178/