gpt4 book ai didi

javascript - 拆分数组仍然是一个项目的数组而不是一个字符串

转载 作者:行者123 更新时间:2023-11-30 08:30:19 25 4
gpt4 key购买 nike

我有一个 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)) 时我可以看到前两个条目的父项是一个包含一个数组的数组入口,不像其他的,它们已经在数组之外:

这是 updateddataconsole.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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com