forEach
forEach遍历完整,不会中断,在其内部使用return也只是起到continue的作用,仅跳过当前这条
arr.forEach((item, index, arr1) => { ... })
map
map 遍历完整,不中断,返回新数组
const map1 = arr.map(x => x * 2); // 返回一个arr值的二倍数组, [1,2,3] => [2,4,6]
filter
filter遍历完整,不中断,返回新数组,判断是true作为新数组的单元
const map1 = arr.map(x => x>2); // 返回一个arr值的二倍数组, [1,2,3,5, 6, 7] => [3,5,6,7]
find
find找到第一个符合条件,中断,返回一个值 , 没找到就是undefined
const map1 = arr.find(x => x>2); // 返回一个值, [1,2,3,5, 6, 7] => 3
findIndex
find找到第一个符合条件,中断,返回一个索引 , 没找到就是undefined
const map1 = arr.findIndex(x => x>2); // 返回一个值, [1, 2, 3, 5, 6, 7] => 2
includes
includes 是否包含一个指定的值。它返回一个布尔值true/false。
const map1 = arr.includes(3); // 是否含有3, [1,2,3,5, 6, 7] => true
some
some 找到第一个符合条件中断。它返回一个布尔值true/false。
const map1 = arr.map(x => x>2); // 是否含有大于2的值, [1,2,3,5, 6, 7] => true
every
every 遍历完整,不中断。它返回一个布尔值true/false。
every 都符合条件,返回一个true;否则,返回一个false
const map1 = arr.map(x => x>2); // 是否都大于2, [1,2,3,5, 6, 7] => false
reduce
array.reduce(function(acc, cur, idx, src), initval)
reduce 遍历完整,不中断。汇总为单个返回值
reducer 函数接收4个参数:
- Accumulator (acc) (累计器)
- Current Value (cur) (当前值)
- Current Index (idx) (当前索引)
- Source Array (src) (源数组)
const map1 = arr.reduce((acc, cur, idx, arr)=> {
return acc + cur*idx
}); // 返回一个值, 第一个数不是成为cur,二是acc的初始值,cur的第一个值是第二个数
如果array是对象数组,但要做对象属性值的累加,可以给Accumulator (acc) (累计器)一个初始值initval
const arr2 = [{name:'1', num:1},{name:'3',num: 8},{name:'7',num:90}]; const initval = 90; arr2.reduce((total, currentValue, currentIndex, arr)=>{return total+currentValue.num}, initval); //90+1+8+90=189