我有两组数组对象方面的操作,花了挺长时间都有点屡不清楚,想请大家帮忙看下,谢谢?


                    let arr1 = [{
                        goods_price:1,
                        wg_id:'123'
                    },{
                        goods_price:2,
                        wg_id:'124'
                    },{
                        goods_price:6,
                        wg_id:'789'
                    }]
                    
        
                    let arr2 = [{
                        goods_price:100,
                        wg_id:'345'
                    },{
                        goods_price:200,
                        wg_id:'124'
                    },{
                        goods_price:500,
                        wg_id:'123'
                    }]

我有arr1 和 arr2 两个数组对象,我需要根据arr1中的wg_id 和 arr2中的wg_id去做对比,

以arr1的为标准,

如果arr1中的wg_id 和arr2中的wg_id相等,就用arr2中的对应数据,如果arr1中的wg_id值 ,arr2中不存在的话,就要arr1对应的那条数据,arr2中的wg_id值 ,arr1中不存在的话,则不需要保留,像上面两组数据,我希望得到的结果是:

let arr3 = [{
            goods_price:500,
            wg_id:'123'
        },{
            goods_price:200,
            wg_id:'124'
        },{
            goods_price:6,
            wg_id:'789'
     }]

我自己感觉是不是需要做两步操作,首先要过滤出,arr1 wg_id和arr2中的wg_id相等的数据,然后还需要把arr1中存在 arr2中不存在的数据过滤出来,然后两个数据进行拼接组合,我也不知道这样对不对?

阅读 1.5k
2 个回答
arr1.map(item => arr2.find(citem => citem.wg_id === item.wg_id) || item)
let arr1 = [{
                        goods_price:1,
                        wg_id:'123'
                    },{
                        goods_price:2,
                        wg_id:'124'
                    },{
                        goods_price:6,
                        wg_id:'789'
                    }]
                    
        
 let arr2 = [{
                        goods_price:100,
                        wg_id:'345'
                    },{
                        goods_price:200,
                        wg_id:'124'
                    },{
                        goods_price:500,
                        wg_id:'123'
                    }]
let arr3 = arr1.map(item=>{
    let f = arr2.filter(fi=>{
        return item.wg_id == fi.wg_id
    })
    if(f.length > 0){
        item.goods_price = f[0].goods_price
    }
    return item
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题