您可以使用$.grep()
将数组向下过滤以匹配,并返回.length
.
function CheckForExistance(array, name){
return $.grep(array, function(obj) {
return obj.Name == name;
}).length > 0;
}
或者本机方法在 IMO 上更好一些,但你需要一个用于旧浏览器的 shim。
function CheckForExistance(array, name){
return array.some(function(obj) {
return obj.Name == name;
});
}
这个使用Array.prototype.some
, 并且一旦给出真实的返回值就会退出,然后返回true
。如果没有找到真实的返回,那么它会返回false
。
FWIW,您还可以通过提供动态属性名称来使您的函数更加健壮。
function CheckForExistance(array, prop, val){
return array.some(function(obj) {
return obj[prop] == val;
});
}
然后用它来检查任何属性值。
var found = CheckForExistance(myArray, "Name", "blabla");
或者另一种方法是创建一个函数工厂来创建与迭代器一起使用的函数。
function havePropValue(prop, value) {
return function(obj) {
return obj[prop] == value;
};
}
然后我们可以直接使用.some()
而不需要该CheckForExistance
功能。
var found = myArray.some(havePropValue("Name", "blabla"));
或与$.grep
.
var found = $.grep(myArray, havePropValue("Name", "blabla")).length > 0;