配列内のオブジェクトを検索する次の方法を並べ替えました。この質問は数え切れないほど聞かれていますが、次の方法からどれが最善かを知りたいです。他にあるならそれも知りたいです。
使用する$.grep()
function is_in_array(arr,element){
var result = $.grep(arr, function(e){ return e.id == element; });
return result.length;
}
上記の関数は配列の長さを返します。
- 要素が存在しない場合は 0
- 要素が存在する場合は 1
- 同じ値を持つ複数の要素が存在する場合、長さ > 1
ルックアップ オブジェクトの使用
var lookup = {};
for (var i = 0, len = array.length; i < len; i++) {
lookup[array[i].id] = array[i];
}
このようにして、毎回配列全体をトラバースする必要はありません。lookup[id]
代わりにチェックするだけです。
従来の方法で for ループ
function in_array(array, id) {
for(var i=0;i<array.length;i++) {
if(array[i].id === id) {
return true;
}
}
return false;
}
要素が存在するかどうかを確認するには、in_array(arr,element)
.
どのアプローチが最適ですか? 質問は真剣に重複しているように聞こえますが、これら3つだけからどれが最適かを確認したいだけです.
アップデート
配列には次のようなオブジェクトが含まれます-
var arr = [];
var nameObj = {};
nameObj.label = "somename";
nameObj.id = 123;
arr.push(nameObj);
.
.
.