JavaScript如何把两个数组合并成一个数组(如果一个属性相同,把第二个数组中的项加入第一个数组);(比较绕直接看代码吧)

    var obj1 = [
        {index: 1,name: "权限1"},
        {index: 2,name: "权限2"},
        {index: 3,name: "权限3"},
        ];
    
    
    var obj2 = [
        {category: "权限1",index: 1,tag: "权限1-1"},
        {category: "权限2",index: 2,tag: "权限2-2"},
        {category: "权限3",index: 3,tag: "权限3-3"},
        {category: "权限1",index: 4,tag: "权限1-1"},
        {category: "权限2",index: 5,tag: "权限2-2"},
        {category: "权限3",index: 6,tag: "权限2-2"},
        ];
        

    var newObj = [
        {index: 1,name: "权限1",arr:[{tag:"权限1-1"},{tag:"权限1-1"}]},
        {index: 2,name: "权限2",arr:[{tag:"权限2-2"},{tag:"权限2-2"}]},
        {index: 3,name: "权限3",arr:[{tag:"权限3-3"},{tag:"权限3-3"}]},
        ];

有obj1和obj2两个数组,判断obj1的“name”和obj2的"category"值是否相同,如果相同就把obj2的“tag”属性放入obj1中形成数组。(说的比较饶,直接看结果的样子就好了)
最后能形成newobj的样子。(伸手党骂我吧,给个结果就行!)

阅读 5.8k
2 个回答
var newObj2 = [];
for(var i=0 ; i < obj1.length; i++) {
    var nameO1 = obj1[i].name;
    var arr = [];
    for(var j=0; j < obj2.length ; j++) {
        var nameO2 = obj2[j].category;
        if(nameO1 === nameO2) {
            arr.push(obj2[j].tag);
        }
    }
    // clone obj
    var clonedObj = JSON.parse(JSON.stringify(obj1[i]))
    clonedObj.arr = arr;
    newObj2.push(clonedObj);
}

console.log(newObj2)

你的newObj错了。index3的arr里面应该是3-3和2-2

var obj1 = [
    {index: 1,name: "权限1"},
    {index: 2,name: "权限2"},
    {index: 3,name: "权限3"},
    ];


var obj2 = [
    {category: "权限1",index: 1,tag: "权限1-1"},
    {category: "权限2",index: 2,tag: "权限2-2"},
    {category: "权限3",index: 3,tag: "权限3-3"},
    {category: "权限1",index: 4,tag: "权限1-1"},
    {category: "权限2",index: 5,tag: "权限2-2"},
    {category: "权限3",index: 6,tag: "权限2-2"},
    ];

var t = {};

obj1.forEach(function(v) {
    t[v.name] = [];
});

obj2.forEach(function(v) {
    if (v.category in t) {
        t[v.category].push(v.tag);
    }
});

obj1.forEach(function(v) {
    v["arr"] = t[v.name]
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题