JS的高阶函数
语法:array.forEach(function(currentValue, index, arr), thisValue)
参数:
①function(currentValue, index, arr)
必需。 数组中每个元素需要调用的函数。
函数参数:currentValue
必需。当前元素index
可选。当前元素的索引值。arr
可选。当前元素所属的数组对象。
②thisValue
可选。传递给函数的值一般用 "this" 值。
如果这个参数为空, "undefined"
会传递给 "this" 值。
(这里这里(っ•̀ω•́)っ✎⁾⁾ 我爱学习)
八个高阶函数里,forEach可以不一定操作数组,其余的只能操作数组。
1.forEach()
forEach方法,用于循环遍历整个数组,
forEach(fn) :fn是回调函数,该函数有两个参数(参数名是自定义的)。
第1个参数是代表数组中的每一项, 第2个参数是下标。
注意:forEach中不可以使用return。
let arr = [11,22,33,44,55,66,77,88,99,111,222,333,444]
arr.forEach((item,index)=>{
console.log(item,index);
})
2.filter()
filter方法,用于过滤源数组,返回满足条件的新数组。
注意: filter() 不会对空数组进行检测;filter() 不会改变原始数组。
let arr2 = arr.filter(r=>r%2===0)
console.log(arr2);
3.findIndex()
findIndex方法,用于查找数组中满足条件的第一个元素的位置,没有找到,返回-1。
注意: findIndex() 对于空数组,函数是不会执行的;findIndex() 并没有改变数组的原始值。
let index1 = arr.findIndex(r=>r===55)
console.log(index1); // 4
let index2 = arr.findIndex(r=>r===56)
console.log(index2); // -1
4.find()
find方法,用于查找数组中满足条件的第一个元素,没有找到,返回undefined。
注意: find() 对于空数组,函数是不会执行的;find() 并没有改变数组的原始值。
let num1 = arr.find(r=>r%2===0)
console.log(num1);
let num2 = arr.find(r=>r>10000)
console.log(num2);
5.some()
some方法,用于检查数组中,是否有满足条件的元素。
有一个元素让条件为true,则返回true 。 且剩余的元素不会再进行检测。
注意: some() 不会对空数组进行检测;some() 不会改变原始数组。
let isOk = arr.some(r=>r>100)
console.log(isOk);
6.every()
every方法,用于检查数组中,是否有满足条件的元素。
有一个元素让条件为false,则返回false 。且剩余的元素不会再进行检测。
注意: every() 不会对空数组进行检测;every() 不会改变原始数组。
let isOk2 = arr.every(r=>r>100)
console.log(isOk2);
7.map()
map方法,用于将源数组中的所有元素,根据条件返回一个全新的数组。
map() 方法按照原始数组元素顺序依次处理元素。
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
注意: map() 不会对空数组进行检测;map() 不会改变原始数组。
let arr3 = arr.map(r=>r/2)
console.log(arr3);
8.reduce()
语法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
reduce方法,循环数组中的每一项进行累计操作。
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
注意: reduce() 对于空数组是不会执行回调函数的。
let arr = [12,4,5,66,74,15]
// let r = arr.reduce(function(a,b){
// // console.log(a,b);
// return a+b;
// })
let r = arr.reduce((a,b) => a+b)
console.log(r); // 176
网友评论