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

标签 javascript arrays json

我有一个 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/

相关文章:

json - 如何用Alamofire+ObjectMapper映射JSON响应的多维数组?

javascript - 将服务器中的值分配给 html 并保存

Javascript如何检查商数是否为整数

javascript - 如何使用 React Navigation 在 React Native 中显示标题标题

创建字符串数组而不分配每个字符串

javascript - 使用的主题标签数组

javascript - javascript/jquery 中函数的执行

C++:错误:获取临时 [-fpermissive] 的地址

c# - 如何在 C# 中将自定义异常序列化为 json

JavaScript - 将 JavaScript 与 HTML 连接起来