jQuery - 将一个对象数组与一个数字进行比较并追加

时间:2018-02-24 03:11:31

标签: javascript arrays object comparison

我想将一个对象数组与作为输入传递给函数的值进行比较,如果没有包含它,则追加新对象。

以下是示例:

  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
       }
   }

有人可以帮我弄清楚是否有优化方法来做到这一点吗?

2 个答案:

答案 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);