forEach: 类似for循环,无返回值
var arr = [1,2,3,4,5];
arr.forEach((item,index,array) => {
console.log(index + '--' + item); // 0--1 1--2 2--3 ...
console.log(array); // [1, 2, 3, 4, 5]
})
map: 有return值,返回一个新数组,与原先数组有映射关系
var arr = [1,2,3,4,5];
var arr1 = arr.map((item,index,array) => {
return item *= 2
})
console.log(arr1); //[2, 4, 6, 8, 10]
some: 返回一个布尔值,判断数组中是否有item满足该条件
var arr = [1,2,3,4,5];
var flag = arr.some((item,index,array) => {
return item > 3 //条件判断
})
console.log(flag); //true
every:返回一个布尔值,判断数组是否每一个item满足该条件
var arr = [1,2,3,4,5];
var flag = arr.every((item,index,array) => {
return item > 3 //条件判断
})
console.log(flag); //false
filter是一个过滤器,满足条件的推入新数组
var arr = [1,2,3,4,5];
var arr1 = arr.filter((item,index,array) => {
return item > 3 //条件判断
})
console.log(arr1); // [4, 5]
reduce具有收敛汇总性,最终返回prev(每一次循环结果作为下次的prev)
//prev 第一个值 //next 当前值
//index 当前值的索引 //array 传入的数组
/* prev 第一个参数,可以预先传入,next为数组第一项,开始index=0 */
var arr = [1,2,3,4,5];
var arr1 = arr.reduce((prev,next,index,array) => {
return prev += next
},0)
console.log(arr1); // 15
/* prev可不传,prev取数组第一项,next为第二项,开始index=1 */
var arr2 = arr.reduce((prev,next,index,array) => {
return prev += next
})
console.log(arr2); //15
recuceRight 从右开始循环数组
var arr = [1,2,3,4,5];
var arr3 = arr.reduceRight((prev,next,index,array) => {
return prev.concat(next)
},[])
console.log(arr3); // [5, 4, 3, 2, 1]