如何在JavaScript中查找对象是否存在于数组中

8

我有一个 JavaScript 对象数组,类似于这样:

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

现在我正在尝试通过内置函数(如inArray、indexOf等)查找具有给定属性Name值的对象是否存在于数组中。这意味着如果我只有一个字符串C,那么是否可以使用内置函数(如indexOf、inArray等)来检查数组中是否存在具有属性名称C的对象?

请查看以下内容:- https://dev59.com/GG455IYBdhLWcg3wAvXQ - Rahul Tripathi
你如何使用jQuery inArray实现这个? - agDev
4个回答

9

与 Rahul Tripathi 相关的评论链接答案类似,我会使用修改后的版本来通过名称获取对象,而不是传递整个对象,而不是使用 index of。

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');

8
var found = $.map(objectArray, function(val) {
    if(val.Name == 'C' ) alert('found');
});​

Demo


1

您可以尝试以下方法:

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

更好的方法是简单地遍历数组,但如果你必须使用indexOf,那么你可以这样做。
迭代方法如下:
var inArray = false;
for(var i=0;i<objectArray.length;i++){
    if(objectArray[i]["Name"] == "C"){
        inArray = true;
    }
}

0

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

//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"));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接