一般我们拿到数组,想到的第一件事情肯定是遍历,那么我们就来总结一下,数组遍历一共有多少种方法?
首先我们来例举一下遍历数组的方法:for循环,map, forEach,every, some,filter,include
find 找出数组中符合条件的首个元素,即便是有多个元素符合条件,也只会返回第一个符合条件的元素。没有符合条件的就返回undefine
findIndex跟find的方法类似,只是findIndex返回的是数组的索引值,没有符合条件的就返回-1
find回调函数的入参是value, index, arr
value 必填,当前元素
index 非必填,当前元素的索引
arr 非必填,原数组
forEach 就跟for循环类似, 没有返回值,回调函数也是三个入参,跟find的回调函数入参一样
forEach是不能通过break或者continue来实现跳出函数的。因为foreach里面的回调函数形成了一个作用域,那么我们可以使用try catch
利用try catch跳出
利用break或者continue会报一个语法错误。
some 返回值为布尔值,如果有一个元素符合条件,就返回true,如果没有一个元素满足,就返回false
every 跟some类似,返回值也是布尔值,但是是所有元素都符合条件就返回true,只要有一个元素不符合条件,就返回false
他们的回调函数跟foreach一致的。
map 返回一个新的数组,新的数组是被在回调函数里面处理后的新的数组。返回的顺序跟原数组的顺序一致。注意:不会对空数组做处理
filter返回一个新的函数,返回的是满足条件的新数组,可能跟原数组的长度不一致。filter不会改变原数组。
includes 数组是不是包含某个元素,返回布尔值true/false
reduce 返回一个单个返回值
Array.reduce((acc, cur, idx, src) => {}, initialValue)
callback回调函数接收4个参数:
Accumulator (acc) (累计器) 如果传入了initialValue,Accumulator的初始值就是initialValue,没传入就是数组的第一个值,是操作后的结果
Current Value (cur) (当前值)
Current Index (idx) (当前索引)如果传入了initialValue,索引从0开始,没传入从1开始
Source Array (src) (源数组)
initialValue 指定的初始值,初始值可以是数字,数组,对象
没有传入initialValue
如何让使用
reduce学的还不是透彻,需要继续深入研究,下次有机会再分享。