如果在回调中需要更改数组中的基本类型数据,请使用 array[index] = XXX,不能直接给 value 赋值。
every(func, thisValue) 检测数组所有元素是否都符合判断条件返回布尔参数:
func(必需):指定的回调函数
thisValue(可选):当执行回调函数时this绑定对象的值,默认值为undefined
如果有一项元素执行回调返回false,剩余元素不再执行回调,整个方法返回 false
如果所有元素都满足条件,则整个方法返回 true。
[12, 5, 8, 130, 44].every(x => x >= 10) // 判断数组中每个元素是否大于或等于 10 // false some(func, thisValue) 检测数组中的是否有满足条件的元素返回布尔参数:
func(必需):指定的回调函数
thisValue(可选):当执行回调函数时this绑定对象的值,默认值为undefined
some() 恰好和 every() 相反,只要数组中有一项满足条件判断,则整个方法返回 true,如果全部元素都不满足条件,则返回 false。
[12, 5, 8, 130, 44].every(x => x >= 10) // 判断数组中是否有元素大于或等于 10 // true filter(func, thisValue) 按照条件过滤原始数组返回新数组参数:
func(必需):指定的回调函数
thisValue(可选):当执行回调函数时this绑定对象的值,默认值为undefined
var arr1 = [1, 3, 8, 4, 6, 7, 2] var arr2 = arr1.filter((item, index)=>{return item > 5}) // 从原数组中过滤出大于 5 的元素 // [6, 7, 8] map(func, thisValue) 对数组中每个元素进行一次回调,返回回调返回的元素组成的数组参数:
func(必需):指定的回调函数
thisValue(可选):当执行回调函数时this绑定对象的值,默认值为undefined
可以发现这个几个方法的参数都一样,只是返回值不同而已。
let a1 = ['1','2','3','4'] let a2 = a1.map((value, index) => { return +value }) // [1, 2, 3, 4] reduce(func, initialValue) 为数组提供一个累加器,把数组合并为一个值reduce() 方法很多人搞的不是很清楚,也包括自己,讲真的这个方法还真有点绕,但是弄明白之后确实可以给我们带来很多的便利。
参数:
func(必需):指定的回调函数
initialValue(可选):传递给回调的初始值,说白了即是回调第一个参数 prev 的初始值。
func(prev, curr, currIndex, arr)
参数解析:
prev(必需): 函数上一次 return 回来的值。如果提供了 initialValue,则初始值为initialValue,如果没有提供,则 prev初始值为数组第一个元素。
curr(必需): 当前执行回调时,数组中的元素
currIndex(可选): 当前执行回调时,数组中元素的下标
arr(可选):当前元素所属的数组对象
利用 reduce() 方法 我们操作数组更加方便,例如一些常见的例子:
数组元素求和
var arr = [1, 3, 5, 7, 9] var sum = arr.reduce((prev, curr) => { return prev+curr }) // 25统计数组中元素出现的次数
var arr = ['cc', 'cc1', 'cc', 'cc2', 'cc1', 'cc', 'cc5'] var obj = arr.reduce((prev, curr) => { if (!prev[curr]) { prev[curr] = 1 } else { prev[curr] += 1 } return prev }, {}) // {'cc': 3, 'cc1': 2, 'cc2': 1, 'cc5': 1} reduceRight(func, initialValue) 从右至左的方向把数组累加为一个值该方法同上面讲的 reduce() 方法使用基本一致,只不过累加的方式为数组的末尾向前将数组中的数组项做累加。
下面几个关于遍历的方法是 ES6 新增的,一种关于查找,一种是关于遍历。
find(func, thisValue) 找出第一个符合条件的数组成员并返回参数:
func(必需):指定的回调函数
thisValue(可选):当执行回调函数时this绑定对象的值,默认值为undefined
如果没有找到,则返回 undefined
var arr = [1, 3, 5, 7] var num = arr.find((item, index) => {return item > 1}) // 3 findIndex(func, thisValue) 找出第一个符合条件的数组成员下标并返回参数:
func(必需):指定的回调函数
thisValue(可选):当执行回调函数时this绑定对象的值,默认值为undefined
如果没有找到则返回 -1
var arr = [1, 3, 5, 7] var index = arr.findIndex((item, index) => {return item > 1}) // 1注意:
这两个方法都可以识别 NaN,弥补了indexOf 的不足。
keys()&values()&entries() 遍历键名、遍历键值、遍历键名+键值这三种方法都会返回一个新的 Array Iterator 对象
array.keys() 返回一个包含数组所有下标组成的 Iterator。
array.values() 返回一个包含数组所有元素组成的 Iterator。
array.entries() 返回一个包含数组元素加下标组成的 Iterator。