循环遍历数组/对象
1、for循环
1)常规写法
2) arr.lengh缓存下来:实际上,缓存后比常规写法效率要低
3)小技巧:边赋值边判断,第二个分号中是判断的内容,每次循环时会对其进行判断,当i++大于arr的长度时,arr[i++]=underfined 在JS中0 null underfined '' 都会转换为false,循环停止。
注意:for循环使用break、continue和return都可以退出
1)break:终止循环,只能用在循环语句中
2)continue:跳出当前循环。继续下一个循环
3)return 表达式:用于指定函数返回的值,只能用在函数体中。
执行return false;语句会终止函数的执行,返回到函数的调用处,即使后面还有其他的语句也
不再执行。
2、for of:ES6推出的用于迭代字符串、数组、类数组对象、map、set等一切可以迭代的结构。
注意:不能迭代对象
1)字符串与数组
2)类数组对象
3)set结构
4)map结构
3、for in(ES5):主要用于遍历数组或者对象中的属性,不推荐直接遍历数组,因为遍历的是数组中的索引
4、forEach():用于遍历数组
forEach(function(){},thisValue)
* function(currentVal,index,arr){ }
- currentVal:当前遍历的值
- index:代表当前的索引值
- Arr:可选,当前遍历的对象
* thisValue:参数函数的this值,默认为window
注意:存在的问题就是在遍历完所有元素之前不能停止,没有break语句。如果需要强制退出,使用try catch语句,在catch中return
5、map():map()方法返回一个新数组,新数组返回值为原数组元素调用函数处理后的值。(用于对数组的元素进行一些处理)
和forEach()方法一样,只能用于遍历数组,不能用于对象
6、filter():返回过滤后的数组,不会改变原数组。(用于数组的过滤)
7、some():检测数组的元素是否满足指定条件,返回布尔值。不会改变原数组
8、every():用于检测数组元素是否都满足条件,返回布尔值,不会改变原数组
9、reduce():