JavaScript filter/map/reduce方法 初次体验(基础)
filter/map/reduce
filter()
需求:取出nums
数组中小于100的数
nums = [11, 55, 89, 65, 66, 21, 112, 559, 1];
let newNums = nums.filter(function(x){
return x < 100;
})
console.log(newNums);
filter()
方法会创建一个新数组,原数组的每个元素传入回调函数中,回调函数中有return
返回值,若返回值为true
,这个元素保存到新数组中;若返回值为false
,则该元素不保存到新数组中;原数组不发生改变。
这个例子中filter()
接受了一个参数函数作为参数,函数中的x
为nums
数组中的元素。
nums
数组中共9个元素,所以这个
function(x){
return x < 100;
}
函数会执行九次,
第一次:x=11 < 100
成立表达式为true
,函数返回true
,filter()
将11
放入新的数组newNums
当表示不成立为false
的时候filter()
将过滤掉这个使表达式为false
的这个元素,不会将这个放入新数组。以此类推最终返回一个新的数组newNums
map()
需求:将newNums
数组中的值都乘以100(接上个需求)
let new1Nums = newNums.map(function(x){
return x * 100;
})
console.log(new1Nums);
reduce
需求:将new1Nums
数组中的值相加求和(接上个需求)
let new2Nums = new1Nums.reduce(function(pre, n){
return pre + n;
}, 0)
console.log(new2Nums);
总结:
fliter相当于过滤,对数组元素根据条件进行筛选。
map相当于对映射,对数组元素进行操作,
reduce相当于汇总,都不修改原数组