我对性能有疑问。
假设我有大量名为 records
的对象。
我的目标是创建一个集合(确保我有不同的值),其中包含来自 records
的记录的值 value
满足特定条件 - if(rec.otherValue === 'something specific')
。
我有两种可能的方法可以产生所需的结果:
选项 1:
const set = new Set();
records.foreach(rec => {
if(rec.otherValue === 'something specific'){
set.add(rec.value);
}
});
第一个选项很简单。如果满足特定条件,我会遍历所有记录并将所需的值添加到集合中。
选项 2:
const set = new Set();
const filteredRecords = records.filter(rec => rec.otherValue === 'something specific');
filteredRecords.foreach(rec => {
set.add(rec.value);
});
第二个选项首先过滤大量的 records
数组以获得更具体的对象数组(从数百条记录到少于 10 条),然后将所需的值添加到 Set 中。
这两个选项产生完全相同的结果。 我的问题是:哪一个是性能最好的?我的目标是使功能尽可能快。 如果有第三种更快的选择,请分享。
最佳答案
如果您想要速度,就性能而言,没有什么比 native ( Vanilla )javascript 更好的了。 然后,
for (var i=0; i< records.length; i++) {
// your operations
}
请检查:Why using for is faster than some() or filter()
和
https://web.archive.org/web/20170403221045/https://blogs.oracle.com/greimer/entry/best_way_to_code_a
关于javascript - 性能 - foreach 内部条件 vs 具有相同条件的过滤器和 javascript 中过滤数组的 foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66974881/