我已经排序了以下在数组中搜索对象的方法。这个问题已经被问过无数次了,但我想从以下方式中知道哪个最好。如果有另一个我也想知道。
使用$.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)
.
哪种方法最好?问题听起来很重复,但我只想确定这三个中哪个最好。
更新
数组将包含以下对象——
var arr = [];
var nameObj = {};
nameObj.label = "somename";
nameObj.id = 123;
arr.push(nameObj);
.
.
.