我在javascript中有一个对象数组。类似的东西:
var objectArray = [
{ "Name" : "A", "Id" : "1" },
{ "Name" : "B", "Id" : "2" },
{ "Name" : "C", "Id" : "3" },
{ "Name" : "D", "Id" : "4" }
];
现在我试图通过内置函数Name
,inArray
等来确定数组中是否存在具有给定属性indexOf
值的对象。意味着如果我只有一个字符串C
,而不是使用内置函数如indexOf,inArray等来检查数组中是否存在具有属性名称C的obejct?
答案 0 :(得分:8)
与使用来自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');
答案 1 :(得分:7)
var found = $.map(objectArray, function(val) {
if(val.Name == 'C' ) alert('found');
});
答案 2 :(得分: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;
}
}
答案 3 :(得分: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"));