js 数组处理问题

往一个数组中push对象,对象的唯一标识为name,当push到某个对象时,发现数组中存在 name相等的对象,此时如何更新数组中name相同的对象为当前要push的对象

阅读 2.1k
3 个回答
const objArray = [{name: 1, other: 2}, {name: 2, other: 2}];
const addObj = {name: 2, other: 4}
const index = objArray.findIndex(i => i.name === addObj.name);
if(index > -1) {
    objArray[index] = addObj;
    // 在 vue 中可能需要写成 
    this.$set(objArray, index, addObj);
} else {
    objArray.push(addObj);
}

以上就是最中规中矩的写法吧。

function youpush(list, data){
    let index = list.findIndex(item => item.name == data.name)
    if(index > -1){
        list.splice(index, 1, data)
    }else{
        list.push(data)
    }
}

var list = [{name: 1, value: 1}, {name: 2, value: 2}, {name: 3, value: 3}]

youpush(list, {name: 5, value: 5})
youpush(list, {name: 2, value: 22})

遍历数组,以name的值为key,对象为value,创建一个对象类型的数据obj,key已经有了就更新,没有就添加。
遍历完数组,重新赋值为obj的values。

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