js数组每一项的对象属性id如何判断是否存在?

        var a = [
            {id:1,name : "Jack"},
            {id:2,name : "Lucy"},
            {id:3,name : "Tom"}
        ]
        
        /*
        var b = {id:3,name : "Joy"}
        var b = {id:4,name : "May"}
        */
        a数组的每一项id怎么去跟b的id判断是否存在,如果存在就只修改name值,如果不存在就push到a数组里.
        
        现在b就有两种情况.



阅读 4.3k
2 个回答
var a = [
    { id: 1, name: "Jack" },
    { id: 2, name: "Lucy" },
    { id: 3, name: "Tom" }
]
// var b = {id:3,name : "Joy"}
var b = { id: 4, name: "May" };
var index = a.findIndex(item => item.id === b.id);

~index ? (a[index].name = b.name) : a.push(b);
let item = a.find(obj => obj.id === b.id);
if(item) {
    item.name = b.name;
} else {
    a.push(b)
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题