map、some、every、filter
every()方法用于检测数组中所有元素是否都符合指定条件,若符合返回true,否则返回false;不会对空数组进行检测,不会改变原来的数组。
some()方法用于检测数组中的元素是否有满足指定条件的,若满足返回true,否则返回false;不会对空数组进行检测,不会改变原来的数组。
map()方法返回一个新数组,新数组中的每一个元素为原始数组对应每一个元素调用函数处理后的值;不会对空数组进行编辑,不会改变原来的数组。
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。注意: reduce() 对于空数组是不会执行回调函数的。
高阶函数是对其他函数进行操作的函数,可以将它们作为参数或返回它们。 简单来说,高阶函数是一个函数,它接收函数作为参数或将函数作为输出返回。
例如,Array.prototype.map,Array.prototype.filter和Array.prototype.reduce是语言中内置的一些高阶函数。
1、every()
语法: array.every(function(item,index,array){})
// item:当前元素的值;
// index:当前元素的索引;
// array:当前元素的数组对象;
// eg: 数组中所用的值都大于10
var ages = [32, 33, 12, 40];
var age = ages.every((val,ind)=>{
return val>10;
})
console.log(age)// true
2、some()
语法: array.some(function(item,index,array){})
// item:当前元素的值;
// index:当前元素的索引;
// array:当前元素的数组对象;
// eg: 数组中存在值有一个大于35即可
var ages = [32, 33, 12, 40];
var age = ages.some((val,ind)=>{
return val>35;
})
console.log(age)// true
3、map()
语法: array.map(function(item,index,array){})
// item:当前元素的值;
// index:当前元素的索引;
// array:当前元素的数组对象;
// eg: 对原数组的每个值都平方
var numbers = [2, 3, 4, 5];
var double = numbers.map((val,ind) => {
return val*val
});
console.log(double) //[4, 9, 16, 25]
4、filter()
语法: array.filter(function(currentValue,index,arr), thisValue)
// currentValue 必须。当前元素的值
// index 可选。当前元素的索引值
// arr 可选。当前元素属于的数组对象
// thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。如果省略了 thisValue ,“this” 的值为 “undefined”
// eg:找出原数组中值大于10的项
var numbers = [2, 13, 10, 5,20];
var double = numbers.filter((val,ind) => {
return val>10
});
console.log(double) //[13, 20]
5、reduce()
语法: array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
// total 必需。初始值, 或者计算结束后的返回值。
// currentValue 必需。当前元素
// currentIndex 可选。当前元素的索引
// arr 可选。当前元素所属的数组对象。
// initialValue 可选。传递给函数的初始值
…未完待续