を使用$.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;