我有一个如下所示的数组:
var myArray = [
{'id' : 1, 'name' : 'test1'},
{'id' : 2, 'name' : 'test2'},
{'id' : 3, 'name' : 'test3'}
];
然后我有一个包含一些id的变量:
V ar someId = 2;
如何检查myArray
是否包含Object
,其ID是否等于someId
?
答案 0 :(得分:5)
您可以使用.some()
方法:
var isThere = myArray.some(function(element) {
return element.id == someId;
});
如果回调为某个元素返回true
,则.some()
method返回布尔值true
。一旦发生这种情况,迭代就会停止。
如果您想要数组中的元素而不仅仅是是/否答案,您可以将同一类型的回调传递给.find()
:
var theElement = myArray.find(function(element) {
return element.id == someId;
});
当该回调返回true
时,迭代停止,.find()
返回元素本身。如果未找到,则返回undefined
。
答案 1 :(得分:0)
您可以尝试以下
var filteredArray = myArray.filter(function(item) {
return item.id == someId
});
if(filteredArray.length > 0) {
console.log("Found");
}
答案 2 :(得分:0)
Vanilla JS:
var myArray = [
{'id' : 1, 'name' : 'test1'},
{'id' : 2, 'name' : 'test2'},
{'id' : 3, 'name' : 'test3'}
];
function findby(arr, key, val){
for(var i=0; i<arr.length; i++){
if(arr[i][key] === val){
return arr[i];
}
}
return null;
}
var found = findby(myArray, "id", 2);
alert(found.name);