如何将数组的值简单地转换为true
或false
,哪种方法最好。
我很困惑,因为jsperf给出的结果与google chrome控制台、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);
编辑: 如下面问题的答案所述,行为是有缺陷的,因为我在使用JSPERF时打开了Chrome开发工具,并且所有消息都被记录到控制台中,这意味着实际上结果已经改变。 请记住,在执行时保持控制台打开可能会导致JSPERF无法正常工作。