检查数组中是否存在元素而不迭代它
我的阵列:
tempListArray = "[{"id":"12","value":false},{"id":"10","value":false},{"id":"9","value":false},{"id":"8","value":false}]";
要检查一个元素是否存在,我会这样做:
for (var i in tempListArray) {
//check flag
if (tempListArray[i].id == Id) {
flagExistsLoop = 1;
break;
}
}
无论如何,我可以检查Id是否存在,而不会循环遍历整个数组。 如果说我有100个元素,基本上我担心表现。
谢谢
不,如果没有使用自定义的字典对象(你真的不想这么做),没有比对所有对象进行“全面扫描”更快的方法。
作为一般的经验法则,不要担心任何语言或任何情况下的性能,直到迭代的总次数达到5位数,最常见的是6或7次。扫描包含100个元素的表最差应该是几毫秒。 在注意到性能影响之前担心性能影响是最糟糕的过早优化之一。
不,你不知道没有迭代数组。
但是,注意for...in
循环中是迭代数组的不好方法:
Array.prototype
和Object.protoype
定义的Object.protoype
。 我会使用其中的一个:
for
以数字指标环:
for (var i=0; i<tempListArray.length; ++i) {
if (tempListArray[i].id == Id) {
flagExistsLoop = 1;
break;
}
}
Array.prototype.some
(EcmaScript 5):
var flagExistsLoop = tempListArray.some(function(item) {
return item.id == Id;
});
请注意,它可能比其他的更慢,因为它在每个步骤都调用一个函数。
for...of
循环(EcmaScript 6):
for (var item of tempListArray) {
if (item.id == Id) {
flagExistsLoop = 1;
break;
}
}
尝试使用php.js它可以帮助,而你可以使用相同的PHP函数名称,它有一些有用的功能
链接地址: http://www.djcxy.com/p/25683.html上一篇: Checking if element exists in array without iterating through it