数组方法不混淆 (3)

如果在回调中需要更改数组中的基本类型数据,请使用 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。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywwwy.html