1.forEach( item, index, array )
: 遍历数组,对数组的每个元素执行一次提供的函数,改变当前数组,没有返回值
- item: 当前项的值
- index: 当前项的索引
- array: 操作的数组
let arr1 = [ 'a', 'b', 'c' ];
let arr2 = arr1.forEach( ( item, index, arr ) => {
if (index === 0) console.log( 'arr: ', arr );
console.log( 'item: ', item, ' | index: ', index );
} );
console.log( 'arr2: ', arr2 );
2.map( item, index, array )
: 返回一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
- item: 当前项的值
- index: 当前项的索引
- array: 操作的数组
let arr1 = [ 'a', 'b', 'c' ];
let arr2 = arr1.map( ( item, index, arr ) => {
return 'after map ' + item
} )
console.log( 'arr2: ', arr2 );
3.filter( )
: 返回一个新数组, 其包含通过所提供函数实现的测试的所有元素。也就是说一个过滤器的作用,没有通过函数测试的元素将被过滤掉
- item: 当前项的值
- index: 当前项的索引
- array: 操作的数组
let arr1 = [ 'javaScript', 'webpack', 'typeScript', 'nodejs' ];
let arr2 = arr1.filter( ( item, index, arr ) => {
// 返回字符长度小于10的元素
return item.length < 10
} )
console.log( 'arr2: ', arr2 );
4.every( item, index, array )
: 它返回一个Boolean
值,测试数组内的所有元素是否都能通过指定函数的测试,所有元素都通过才会返回true
,否则返回false
- item: 当前项的值
- index: 当前项的索引
- array: 操作的数组
let arr1 = [ 1, 2, 3, 4, 5 ];
let arr2 = arr1.every( ( item, index, arr ) => {
return item < 5
} )
console.log( 'arr2: ', arr2 );
5.some( item, index, array )
: 和every
相反,只要数组中的元素有一个通过指定函数的测试,那么就返回true
,否则返回false
- item: 当前项的值
- index: 当前项的索引
- array: 操作的数组
let arr1 = [ 1, 2, 3, 4, 5 ];
let arr2 = arr1.some( ( item, index, arr ) => {
return item < 2
} )
console.log( 'arr2: ', arr2 );
6.reduce( accumulator, item, index, array )
: 对数组中的每个元素执行一个提供的reducer函数,将其结果汇总为单个返回值。
- accumulator: 累加器
- item: 当前项的值
- index: 当前项的索引
- array: 操作的数组
let arr1 = [ 1, 2, 3, 4, 5 ];
let arr2 = arr1.reduce( ( accumulator, item, index, arr ) => {
console.log( '每次累加器的值: ', accumulator );
return accumulator + item;
} )
console.log( 'arr2: ', arr2 );
7.reduceRight( accumulator, item, index, array )
: 功能与reduce
相同,不同的是: 从数组最后一个元素向前遍历计算