因为空间局部性(缓存的存在),数组迭代效率更高。
当然也不绝对(如果你的迭代序列因为缓存发生抖动,速度就大打折扣),但几乎都是数组更快。
数组的迭代方法,每个方法都会接受两个参数:(1)要在每一项上运行的函数(2)运行该函数的作用域——影响this的值(可选)。传入方法中的函数会接受三个参数:(1)数组每项的值(2)该项在数组中的位置(3)数组对象本身。5种迭代方法的作用如下:
数组还有两个归并的方法:reduce和reduceRight。这两个方法会迭代数组的所有项,最终返回一个迭代的最后值。reduce方法从数组的第一项开始迭代,reduceRight则从数组的最后一项开始。两个方法接受参数相同,都是两个参数:一个是在在每项上调用的函数以及迭代的初始值(可选)。下面,我们对reduce方法的实现进行详解。
ES6规范中Set数据结构,类似于数组,但其中的值全都是唯一的。搭配数组的迭代方法,我们能够快速方便地实现两个或多个数组的交、并、差集。
MDN web docs
ECMAScript 6入门