javascript - 性能 - foreach 内部条件 vs 具有相同条件的过滤器和 javascript 中过滤数组的 foreach

标签 javascript arrays performance

我对性能有疑问。 假设我有大量名为 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/

相关文章:

performance - Scala mutable.BitSet 交集性能

javascript - 无法实例化模块 myModule

javascript - 根据需要在 Backbone Collection 中获取模型?

Java - 在数组列表中的两个元素之间添加一个元素

vb.net - 迁移到 .NET 3.5 时出现排序数组警告

asp.net - 使用 ASN.NET 了解 SQL 中应用程序角色的性能影响

javascript - 烛台始终位于组合图表谷歌图表中的线条之上

javascript - 查找数组中是否有任何项目符合条件

ios - 迭代数组时 Swift 无限循环

c# - MongoDB慢写导致socket超时异常