遍历数组通常用for循环
ES5也可以使用forEach,ES5具有遍历数组功能的还有map、filter 、some、every、reduce等,只不过他们的返回结果不一样。但是使用foreach遍历数组的话,使用break不能中断循环,使用return也不能返回到外层函数
for in 遍历数组缺点
1. index索引为字符串型数字,不能直接进行几何运算
2. 遍历顺序有可能不是按照实际数组的内部顺序
3. 使用for in 会遍历数组所有的可枚举属性,包括原型。
for in更适合遍历对象,不要使用for in遍历数组
for of遍历
for of 适用遍历数组对象/字符串/map/set等拥有迭代器对象的集合,但是不能遍历对象,因为没有迭代器对象,与foreach()不同的是,它可以正确响应break、continue和return语句
- 关于数组中map与foreach的区别: map有一个返回值,foreach则没有返回值
相同点:每次执行匿名函数都支持3个参数,参数分别是item(当前每一项),index(索引值),arr(原数组)
区别: map方法返回一个新的数组,数组中的元素为原始数组调用函数处理后的值。map方法不会对空数组进行检测,map方法不会改变原始数组。若arr为空数组,则map方法返回的 也是一个空数组; forEach方法用来调用数组的每个元素,将元素传给回调函数;forEach对于空数组是不会调用回调函数的。无论arr是不是空数组,forEach返回都是undefined.
并且map的{ }里加其return 字符时,会返回与元素组等长度的由字符元素组成的数组,而forEach还是返回一个undefined