JS之数组对象的覆盖

覆盖数组对象

业务场景:对象A与对象B具有相同属性的情况下,把对象B的属性值赋值到对象A中,且不影响对象A的其他属性。(数组对象中如果嵌套了其他数组对象,则该方法不适用)


var o1 = [
  { name: '小明', age: 18, sex: '男' },
  { name: '小红', age: 18, sex: '女' },
  { name: '小刚', age: 18 },
]
var o2 = [
  { name: '小红', age: 20 },
  { name: '小刚', age: 16 },
]
function objAssign(objA, objB, value) {
  return objA.map((itemA) => {
    return Object.assign(itemA, objB.find((itemB) => {
      return itemB && itemA[value] === itemB[value] // 指定属性名name
    }))
  })
}
console.log(JSON.stringify(objAssign(o1, o2, 'name'))) // 指定属性名name
/* 输出结果
  { name: '小明', age: 18, sex: '男' },
  { name: '小红', age: 20, sex: '女' },
  { name: '小刚', age: 16 },
*/
posted @ 2021-08-03 17:14  bugSource  阅读(1534)  评论(0编辑  收藏  举报