鍍金池/ 問答/HTML/ js數(shù)組對象的覆蓋

js數(shù)組對象的覆蓋

var o1 = [{value: "doomfist",checked: false},
{value: "genji",checked: false},
{value: "mccree", checked: false}];

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

有沒有現(xiàn)成的方法比如es6,lodash中的方法,將o2對象覆蓋到o1,最終的結(jié)果是

[{value: "doomfist",checked: false},
{value: "genji",checked: true},
{value: "mccree", checked: true}]

使用Object.assign(o1,o2)的結(jié)果如下:

[{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
  }))
})
回答
編輯回答
眼雜

sugarjs先add兩個數(shù)組,然后filter掉value是mccree并且checked是false的,一步到位的還真沒想起來

2017年9月29日 09:30
編輯回答
雅痞

沒有一步到位的,就用這了

const result = o1.map(item1 => {
  return Object.assign(item1, o2.find(item2 => {
    return item2 && item1.value === item2.value
  }))
})
2018年4月22日 15:43
編輯回答
萌吟
Object.assign(o1,o2)

你想要{value:a,check:b}比較,讓value的值不同的,不變,只更新check的值,是這個意思嗎。

你的a,b本質(zhì)上都是value,而現(xiàn)成的方法都是比較對象中的key來做替換。
2017年6月28日 12:46