【问题标题】:Performance: Use if in forEach or use filter then forEach the filtered array性能:在 forEach 中使用 if 或使用 filter then forEach 过滤后的数组
【发布时间】:2023-03-28 20:24:01
【问题描述】:

我有一个项目数组,我想对满足某些要求的项目执行一些任务。有两种方法可以做到这一点。

首先,在forEach中使用if子句

arr.forEach(item => {
  if (isSatisfied(item)) {
    //...do some tasks
  }
}

其次,filter 数组,然后使用 forEach 和过滤后的数组。

arr.filter(item => isSatisfied(item)).forEach(item => { /* do some tasks */ });

isSatisfied 会检查该项目是否满足条件。

哪一个会给我更好的表现,为什么?感谢您的帮助。

【问题讨论】:

  • 我投第一票
  • 第一个更好,但传统的old school for loop 甚至比forEach 更快。也可能在code review exchange 上获得更多评论
  • 这取决于arr.filter的结果是否被重用以及过滤掉多少百分比的项目。实现之间的性能可能会有很大差异。使用更符合语义的。

标签: javascript arrays performance


【解决方案1】:

第一个会更有效,因为第二个循环遍历某些项目两次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多