在对象或数组上进行迭代/循环更快吗?

时间:2019-07-04 17:50:49

标签: javascript arrays performance loops object

因此,我一直在使用React使用ProductSearchPage,它具有一堆过滤器值,我需要设置这些过滤器值来过滤我的产品列表并显示结果。

到目前为止,我一直将我的产品列表作为数组处理(即使我将其作为对象进行获取,也正在将其转换为数组),并且我一直在使用大量{{1 }},map和很多forEach遍历这些数组。

  • 我将得到一个filter,我将根据productList进行过滤
  • 我将采用新的category并根据filteredList进行过滤
  • 我将采用新的priceFilters并根据filteredList进行过滤
  • ratingFilterbrandFilter等,依此类推。

我开始认为我可能会创建一个迭代的黑洞,并且在某些时候可能会损害我的性能。我正在做客户端搜索和过滤。我们正在谈论的最大产品数是2k。

所以我想知道迭代和筛选对象而不是数组会更快。我将一路删除属性并创建新对象。

所以我做了以下代码片段进行测试:

令我惊讶的是,结果非常支持数组循环。

featuresFilters

问题

是否有足够的证据表明遍历数组比遍历对象快,我应该坚持使用Looping object with for...in: 0.31ms Looping array with forEach: 0.08ms Looping array with filter: 0.10ms Looping array with map: 0.09ms forEachmap方法?

注意::这确实很简单。在我的真实情况下,每个产品都是具有某些属性的对象(其中一些是嵌套属性)。因此,我的选择是将列表保留为对象数组(就像我到目前为止所做的那样),或者我可以将每个产品的大对象filter保留为该对象的属性。这会改变结果吗?

allProducts

0 个答案:

没有答案