javascript - 如何合并维数组

标签 javascript arrays json multidimensional-array merge

var list1 = [
    {
        id: 'node1',
        children: [
            {
                id: 'node11',
                children: []
            }
        ]
    }
];

var list2 = [
    {
        id: 'node1',
        children: [
            {
                id: 'node13',
                children: []
            }
        ]
    }
];
var resultList = [
    {
        id: 'node1',
        children: [
            {
                id: 'node11',
                children: []
            }, {
                id: 'node13',
                children: []
            }
        ]
    }
];

我所有的数组都是树,一个节点只能属于一个父节点。 我想合并list1和list2得到resultList。我试了很多方法,递归回调,字符串搜索和替换等等,但我还是想不通。

最佳答案

如果我没理解错的话,您希望通过 id 压缩它。

function getCompactById(arr) { // must have the same id
    var res = [];
    var obj = {};
    obj.id = arr[0][0].id;
    obj.children = [];
    for(var i = 0; i < arr.length; i += 1) {
        obj.children.push(arr[i][0].children[0]);
    }
    res.push(obj);
    return res;
}

数组看起来像var arr = [list1, list2];在函数中创建一个数组和一个对象。该对象获得一个 id 和一个数组。 id 始终相同,因此我们从第一个数组中获取它。遍历数组并推送所有对象 arr[i][0].children[0] .循环后将 obj 插入数组。返回结果数组。

Demo

关于javascript - 如何合并维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30290019/

相关文章:

javascript - 在现有数据上创建 Vue.js 对象

arrays - 如何在 hive sql 中将数组转换为字符串?

arrays - react .js : How to properly append multiple items to an array state using its use-state hook setter?

java - Play framework 2.5 Json post request binder

c# - 在 C# 中解析 JSON 对象而不使用类

c# - WCF 调用结果

javascript - 错误: Cannot read property 'each' of undefined

javascript - 当悬停一个 DOM 元素时显示另一个

javascript - 递归回溯生成迷宫

c++ - C++ 中的 3 维数组