关于jquery:如何查找对象是否存在于数组中或不存在javascript

How to find whether object exist in array or not javascript

我有一个javascript中的对象数组。类似的事情:

1
2
3
4
5
6
    var objectArray = [
         {"Name" :"A","Id" :"1" },
         {"Name" :"B","Id" :"2" },
         {"Name" :"C","Id" :"3" },
         {"Name" :"D","Id" :"4" }
    ];

现在,我试图通过内置函数(如inArrayindexOf等)来确定数组中是否存在具有给定属性Name值的对象。这意味着如果我只有一个字符串C那么使用内置函数l来检查数组中是否存在具有属性名为c的obejct艾克指数,伊纳瑞等?


与rahul tripathi的评论链接答案类似,我不使用的索引,而是使用修改后的版本按名称提取对象,而不是传递整个对象。

1
2
3
4
5
6
7
8
9
10
function pluckByName(inArr, name, exists)
{
    for (i = 0; i < inArr.length; i++ )
    {
        if (inArr[i].name == name)
        {
            return (exists === true) ? true : inArr[i];
        }
    }
}

用法

1
2
3
4
5
// Find whether object exists in the array
var a = pluckByName(objectArray, 'A', true);

// Pluck the object from the array
var b = pluckByName(objectArray, 'B');

1
2
3
var found = $.map(objectArray, function(val) {
    if(val.Name == 'C' ) alert('found');
});?

演示


你可以试试:

1
objectArray.indexOf({"Name" :"C","Id" :"3" });

一个更好的方法是简单地迭代数组,但是如果必须使用indexof,这就是您要做的。

迭代方法如下:

1
2
3
4
5
6
var inArray = false;
for(var i=0;i<objectArray.length;i++){
    if(objectArray[i]["Name"] =="C"){
        inArray = true;
    }
}

好吧,如果对象不太大,可以考虑迭代和匹配来查找特定对象是否存在,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//The Object
var objectArray = [
     {"Name" :"A","Id" :"1" },
     {"Name" :"B","Id" :"2" },
     {"Name" :"C","Id" :"3" },
     {"Name" :"D","Id" :"4" }
];


//Function to check if object exist with the given properties
function checkIfObjectExist(name,id)
{
for(var i=0;i<objectArray.length;i++)
 {
  if(objectArray[i].Name===name && objectArray[i].Id===id)
   {    
      return true;
   }
 }    
}

// Test if function is working
console.log(checkIfObjectExist("B","2"));