Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery-将对象数组与数字和附加进行比较_Javascript_Arrays_Object_Comparison - Fatal编程技术网

Javascript jQuery-将对象数组与数字和附加进行比较

Javascript jQuery-将对象数组与数字和附加进行比较,javascript,arrays,object,comparison,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 no

我想将对象数组与作为输入传递给函数的值进行比较,如果不包括新对象,则附加新对象

以下是一个例子:

  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
       }
   }
有人能帮我弄清楚是否有一种优化的方法来实现这一点吗?

您可以使用Array.find

像这样:

obj.find (function (elem) {
    return elem.id == id;
});
这将返回与您的id匹配的第一个元素。或者您可以使用findIndex来获取索引。

我想您需要这个:

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);
var obj=[{Id:1,名称:'test'},{Id:2,名称:'test2'},{Id:3,名称:'test3'}];
控制台日志(obj);
功能(身份证、姓名){
var isFound=false;
for(设i=0;i