for 循环
1 | // 普通用法 |
优化小点:使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显。
常见问题:
1 | const array = []; |
原因:
- var 没有作用域指定, 所以在 for 循环中使用 var 声明的变量是全局变量,而使用 let 声明的变量是仅仅在 for 循环这个块作用域中的。
- for 循环中的匿名函数只是声明了,并没有在当时调用,随后调用的时候已经全局变量 i 已经被修改为 10 了。
Array.foreach
用法:
1 | array.forEach((currentValue, index, array) = { |
特点:
- 不修改原数组;
- 没有返回值;
- 不支持 ie 浏览器
Array.map
用法:
1 | array.map((currentValue, index, array) = { |
特点:
- 有返回值;
- 对原数组没有影响;
- 不支持 IE 浏览器
Array.some
用法:用于检测数组中的元素是否满足指定条件
1 | array.some(function(currentValue,index,arr),thisValue) |
特点:
- 返回值为布尔值。如果数组中有元素满足条件返回 true;否则返回 false,剩余的元素不会再执行检测。
- some() 不会对空数组进行检测;
- some() 不会改变原始数据;
- 兼容 IE9 以上,包括 IE9;
- javascript 版本 1.6
Array.filter
用法:创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
1 | array.filter(function(currentValue,index,arr), thisValue); |
特点:
- filter() 不会对空数组进行检测
- filter() 不会改变原始数据
- 兼容 IE9 以上,包括 IE9
- 返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。
- javascript 版本 1.6
Array.find
用法:查找符合条件的值
1 | array.find(function(currentValue, index, arr),thisValue) |
特点:
- 返回值为通过测试的第一个值;
- 当 find 回调函数返回的 true 时,之后的元素将不会再执行函数;
- 如果没有符合条件的元素返回 undefined ;
- 不会执行空数组
- 不会改变原数组
- 不兼容 IE
Array.reduce
用法:累加器
1 | // 参数说明: |
特点:
- 返回计算结果
- JavaScript 版本为 ECMAScript 3
- 不执行空数组
- 不兼容 IE
Array.includes
定义:判断数组是否包含一个指定的值,如果包含返回 true, 否则返回 false
用法:
1 | // searchElement 需要查找的元素值 |
特点:
- 返回值为布尔值
- JavaScript 版本为 ECMAScript 6
- 不兼容 IE
以上只是总结了常用又经常搞混的数组方法,如果想要更全面的数组方法请参考:菜鸟教程-Array