关于两个数组进行比较的问题 js

var array_A = [{number:529,NAME:"甲"},{number:550,NAME:"乙"},{number:593,NAME:"丙"},{number:813,NAME:"丁"}]
var array_B = [{ID:"201712015041",number:529},{ID:"201712015045",number:550},{ID:"201712015031",number:593},{ID:"201712015039",number:558}]

最后想要这样的结果
var array_C = [{ID:"201712015041",number:529,NAME:"甲"},{ID:"201712015045",number:550,NAME:"乙"},{ID:"201712015031",number:593,NAME:"丙"},{ID:"201712015039",number:558,NAME:"558"}]
阅读 3.4k
7 个回答
var array_A = [{number:529,NAME:"甲"},{number:550,NAME:"乙"},{number:593,NAME:"丙"},{number:813,NAME:"丁"}];
var array_B = [{ID:"201712015041",number:529},{ID:"201712015045",number:550},{ID:"201712015031",number:593},{ID:"201712015039",number:558}];
var array_C = array_B.map(item=>{
    let _item = array_A.find(item1=>item1.number===item.number);
    if(_item){
        _item.ID = item.ID;
        return _item;
    }else{
        item.NAME = item.number+'';
        return item;
    }
});
console.log(array_C)
var array_A = [{number:529,NAME:"甲"},{number:550,NAME:"乙"},{number:593,NAME:"丙"},{number:813,NAME:"丁"}]
var array_B = [{ID:"201712015041",number:529},{ID:"201712015045",number:550},{ID:"201712015031",number:593},{ID:"201712015039",number:558}]
var array_C = []
array_A.map(itemA => {
  array_B.map(itemB => {
    if (itemA.number === itemB.number) {
      array_C.push(Object.assign({}, itemB, itemA))
    }
  })
})
console.log(array_C)

这个很简单啊,你可以遍历数组给数组的每一项进行赋值,因为在数组中每一项都是一个对象,所以可以直接增加NAME这一项,代码如下


for(var i=0;i<array_A.length;i++){
                array_B[i].NAME = array_A[i].NAME
            }
            console.log(array_B)
var array_A = [{number:529,NAME:"甲"},{number:550,NAME:"乙"},{number:593,NAME:"丙"},                
{number:813,NAME:"丁"}]
var array_B = [{ID:"201712015041",number:529},{ID:"201712015045",number:550},
{ID:"201712015031",number:593},{ID:"201712015039",number:558}]
var  arr = []
array_A.map(function(e){
    array_B.map(function(i){
         if( e.number == i.number){
             e["ID"] = i.ID
             arr.push(e)
         }
    })

     return arr 

})
console.log(arr)

输出结果

clipboard.png

var obj = {}
array_A.forEach(x => obj[x.number] = x)
array_c = array_B.map(x => {
    var val = obj[x.number]
    return (x.NAME = val ? val.NAME : ('' + x.number), x)
})

如果两个数组本身就是排序好的,且是一一对应的,则很好处理,否则比较麻烦。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题