1.for()
写法比较繁杂,循环快效率高。
2.forEach()
没有返回值,不能进行流程控制。
3.map()
有返回数组,支持链式写法,内存占用低。
3.for( in )
一般用于遍历对象属性,虽然也可以遍历数组。
4.for( of )
一般用于遍历数组和集合(set、map),支持流程控制,效率较高。
不同浏览器对方法的支持可能不同,运行速度和效率也不同。
- 谷歌浏览器中ES6+的循环语法会普遍比传统的循环语法慢,但是火狐和safari中情况却几乎相反。
- 谷歌浏览器的各种循环语法的执行耗时上差距并不大。但map特殊,速度明显比其他几种语法慢,而在火狐和safari中却出现了反转,map反而比较快!
注意点:
1.遍历过程中,当数组中元素是值类型,不会改变数组;当是引用类型,则可以改变数组;
比如:[1,2,3] 和 [{name: ‘a’, id: ‘1’}, {name: ‘b’, id: ‘2’}]。
2.map创建新数组不代表不能用它改变原有数组,你用原有数组去承载就可以;
比如: arr = arr.map(item => {});
map()中每个元素都要执行相应的回调函数,所以必须要有return;
3.filter() 返回条件为true的新数组,但不改变原数组。
4.some和every都返回Boolean值。