性能 - foreach 内部条件 vs 具有相同条件的过滤器以及 JavaScript 中过滤数组上的 foreach

Gab*_*ery 6 javascript arrays performance

我有一个关于性能的问题。假设我有大量名为 的对象records。我的目标是创建一个集合(这确保我具有不同的值),其中包含满足特定条件的value记录的值 - 。我有两种可能的方法可以产生所需的结果:recordsif(rec.otherValue === 'something specific')

选项1:

const set = new Set();
records.foreach(rec => {
   if(rec.otherValue === 'something specific'){
       set.add(rec.value);
   }
});
Run Code Online (Sandbox Code Playgroud)

第一个选项很简单。如果满足特定条件,我会遍历所有记录并将所需的值添加到集合中。

选项2:

const set = new Set();
const filteredRecords = records.filter(rec => rec.otherValue === 'something specific');
filteredRecords.foreach(rec => {
   set.add(rec.value);
});
Run Code Online (Sandbox Code Playgroud)

第二个选项首先过滤大量records数组,以获得更具体的对象数组(从数百条记录到不到 10 条),然后将所需的值添加到 Set 中。

两个选项都会产生完全相同的结果。我的问题是:哪一个性能最好?我的目标是使该功能尽可能快。如果有第三种甚至更快的选择,请分享。

Vla*_*cky 0

那这个呢?我认为它具有很高的可读性,这比性能更重要。

const condition = val => val === 'something specific'
const set = new Set(records.filter(condition))
Run Code Online (Sandbox Code Playgroud)