这是将数组的值恢复为简单值true或false值的最佳方法。
作为jsperf是给我,我很困惑非常比谷歌浏览器控制台的NodeJS,或任何其他JS引擎带给我不同的结果。(此处为jsperf片段)
这是代码段,您可以看到(可以在此处运行)some比使用foreach循环快100倍
var array = [];
var i = 0;
var flag = false;
while (i< 100000) {
array.push(Math.random()*10000);
i++;
}
console.time('forEach');
array.forEach((item) => {
if (!flag && item > 10000/2) {
flag = true;
return;
}
return false
});
console.timeEnd('forEach');
console.log(flag);
flag = false;
console.time('some');
flag = array.some((item) => {
if (item > 10000/2) {
return true;
}
return false
});
console.timeEnd('some');
console.log(flag);Run Code Online (Sandbox Code Playgroud)
问题是,为什么JSPERF给出的结果与chrome的控制台,nodejs或任何其他JS引擎不同?
编辑:正如我对下面问题的回答所指出的那样,此行为是有问题的,因为 …