首页 > 解决方案 > `for of` 循环是否重新评估过滤后的数组?

问题描述

考虑这段 javascript 代码:

cont groups = [{ name: 'Sean', type: 'A' }, 
      { name: 'Jen', type: 'A' }, 
      { name: 'Tom', type: 'B'}]

for(const group of groups.filter(g => g.type === 'A')) {
    ...do some work
}

for 循环会重新评估组过滤器每次迭代吗?如何进行测试?在这个例子中,它并不重要,但是,在大型集合中,将过滤器操作提升到它自己的变量中可能很重要。

标签: javascriptarraysfilter

解决方案


不,它不会在每次迭代时重新评估。它会在开始时进行。For...of 循环与迭代器对象一起使用,该对象在内部计算所有元素索引。对于每次迭代,它调用迭代器的 next() 方法来获取下一个元素。有关迭代器的更多信息,请参阅此链接


推荐阅读