filter中的回调函数有一个要求: 必须返回一个boolean值
- true: 当返回true时, 函数内部会自动将这次回调的item加入到新的数组中
- false: 当返回false时, 函数内部会过滤掉这次的item
let nums = [10, 20, 111, 222, 444, 40, 50];
let newArr = nums.filter(function(item) {
return item < 100;
})
console.log(newArr); // [10, 20, 40, 50]
map函数的使用
let newArr2 = newArr.map(function(item){
return item * 2;
})
console.log(newArr2); //[20, 40, 80, 100]
3.reduce函数的使用
- reduce作用对数组中所有的内容进行汇总
- arr.reduce(callback, initialValue)
- callback:每个元素都要执行的回调函数
- initicalValue:作为第一次调用 callback 的第一个参数。如果回调函数后面的0没写,默认为0
- reduce有两个参数,回调函数的第一个参数为上一个数值,第二个参数为当前数值,如果回调函数后面的0没写,默认为0
回调函数的参数
- preValue (上一次调用回调返回的值,或者是提供的初始值(initialValue),这个值可以使引用数据类型)
- currentValue (当前数值)
- index (当前元素在数组中的索引)
- array (调用 reduce函数的数组)
let total = newArr2.reduce(function(prevalue, currentvalue){
return prevalue + currentvalue;
}, 0)
console.log(total);
// 第一次: preValue 0 n 20
// 第二次: preValue 20 n 40
// 第二次: preValue 60 n 80
// 第二次: preValue 140 n 100
// 240
上面三个函数可以直接一起使用,使用链式编程
let total2 = nums.filter(function(item){
return item < 100;
}).map(function(item) {
return item * 2;
}).reduce(function(prevalue, value) {
return prevalue + value;
})
console.log(total2);
// 箭头函数
let total3 = nums.filter(item => item < 100).map(item => item * 2).reduce((prevalue, value) => prevalue + value);
console.log(total3);