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" } ]; |
现在,我试图通过内置函数(如
与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")); |