我想将一个对象数组与作为输入传递给函数的值进行比较,如果没有包含它,则追加新对象。
以下是示例:
function sth(id, name){
var obj = [{Id: 1, Name: 'test'},
{Id: 2, Name: 'test2'}, {Id: 3, Name: 'test3'}];
if(obj.indexOf(id) !== -1){ // logic similar to this
//if not present in obj, then add id, name as an object to obj
// array
}
}
有人可以帮我弄清楚是否有优化方法来做到这一点吗?
答案 0 :(得分:1)
您可以使用Array.find
像这样:
obj.find (function (elem) {
return elem.id == id;
});
这将返回与您的id匹配的第一个elem。或者您可以使用findIndex来获取索引。
答案 1 :(得分:0)
我认为你需要这个:
var obj=[{Id: 1, Name: 'test'}, {Id: 2, Name: 'test2'}, {Id: 3, Name: 'test3'}];
console.log(obj);
function sth(id, name){
var isFound=false;
for(let i=0;i<obj.length;i++){
if(id==obj[i].id){
isFound=true;
break;
}
}
if(!isFound){
obj[obj.length]={Id:id,Name:name};
}
}
sth(4,"test4");
console.log(obj);