您可以使用$.grep()
過濾數組以匹配,並返回.length
的比較結果。
function CheckForExistance(array, name){
return $.grep(array, function(obj) {
return obj.Name == name;
}).length > 0;
}
或者本地方法是一個更好的IMO,但你需要一箇舊的瀏覽器墊片。
function CheckForExistance(array, name){
return array.some(function(obj) {
return obj.Name == name;
});
}
這一個使用Array.prototype.some
,並會盡快爲truthy返回值給出退出,然後將返回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;
你可能會在這裏找到答案:http://stackoverflow.com/questions/3975871/optimize-search-through-large-js-string-array – salih0vicX
如果「Name」作爲對象的唯一標識符,那麼你應該直接將其用作對象內的成員名稱,然後直接訪問這些值而不進行搜索。 –
也許他的數組只是他想用他的功能實現的一個例子。 –