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

我在javascript中有一个对象数组。 与此类似的东西:

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

现在我试图找出一个具有给定属性Name值的对象是否存在于数组中,或者不是通过内置函数如inArrayindexOf等。意味着如果我只有一个字符串C不是这可能检查是否有一个obejct与属性名称C是否存在于数组中或者不使用内置函数,如indexOf,inArray等?

与使用Rahul Tripathi的评论链接答案类似,我会使用修改版本来按名称拉取对象,而不是传递整个对象。

 function pluckByName(inArr, name, exists) { for (i = 0; i < inArr.length; i++ ) { if (inArr[i].name == name) { return (exists === true) ? true : inArr[i]; } } } 

用法

 // Find whether object exists in the array var a = pluckByName(objectArray, 'A', true); // Pluck the object from the array var b = pluckByName(objectArray, 'B'); 
 var found = $.map(objectArray, function(val) { if(val.Name == 'C' ) alert('found'); });​ 

演示

你可以尝试:

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

更好的方法是简单地迭代数组,但如果必须使用indexOf,那么就是这样做的。

迭代方法看起来像:

 var inArray = false; for(var i=0;i 

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

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