猿问

js数组对象的覆盖

var o1 = [{value: "doomfist",checked: false},

{value: "genji",checked: false},

{value: "mccree", checked: false}];


var o2 = [{value: "mccree", checked: true},{value: "genji",checked: true}];

有没有现成的方法比如es6,lodash中的方法,将o2对象覆盖到o1,最终的结果是


[{value: "doomfist",checked: false},

{value: "genji",checked: true},

{value: "mccree", checked: true}]

使用Object.assign(o1,o2)的结果如下:


[{value: "mccree", checked: true}

{value: "genji", checked: true}

{value: "mccree", checked: false}]

没有一步到位的,就用这了


const result = o1.map(item1 => {

  return Object.assign(item1, o2.find(item2 => {

    return item2 && item1.value === item2.value

  }))

})


慕莱坞森
浏览 1570回答 2
2回答

达令说

Object.assign(o1,o2)你想要{value:a,check:b}比较,让value的值不同的,不变,只更新check的值,是这个意思吗。你的a,b本质上都是value,而现成的方法都是比较对象中的key来做替换。

莫回无

sugarjs先add两个数组,然后filter掉value是mccree并且checked是false的,一步到位的还真没想起来
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答