我有 2 个对象数组:
var parents = [
{ id: 77777, data: {}},
{ id: 88888, data: {}},
{ id: 99999, data: {}}
]
var children = [
{
belongTo: 77777,
data: [
{ id: 111, data: {}},
{ id: 222, data: {}}
]},
{
belongTo: 99999,
data: [
{ id: 333, data: {}}
]
}
]
我想将 parent 和 child 合并到:
var all = [
{ id: 77777, data: {}},
{ id: 111, data: {}},
{ id: 222, data: {}},
{ id: 88888, data: {}},
{ id: 99999, data: {}},
{ id: 333, data: {}}
]
]
我一直在尝试将它们拆分或合并在一起,然后压平,但总是非常复杂。
实现合并的最简单方法是什么?
我的复杂方法(不起作用):
children.map(function(child) {
var parentIndex = parents.map(function(x) {return x.id}).indexOf(child.id)
parents.splice(parentIndex + 1, 0, child.data)
})
[].concat.apply([], parents)
最佳答案
你只需要一些嵌套循环就可以得到它: http://jsfiddle.net/hpfgqc4m/2/
var parents = [
{
id: 77777,
data: {}
},
{
id: 88888,
data: {}
},
{
id: 99999,
data: {}
}
]
var children = [
{
belongTo: 77777,
data: [{
id: 111,
data: {}
},
{
id: 222,
data: {}
}]
},
{
belongTo: 99999,
data: [{
id: 333,
data: {}
}]
}
]
var all = [];
parents.forEach(function(e, k) {
all.push(e);
children.forEach(function(el, key) {
if (el.belongTo == e.id) {
el.data.forEach(function(element) {
all.push(element);
});
}
});
});
console.log(all);
关于javascript - 根据id按顺序合并两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33607826/