// // 1.需求: 取出所有小于100的数字
// let newNums = []
// for (let n of nums) {
// if (n < 100) {
// newNums.push(n)
// }
// }
//
// // 2.需求:将所有小于100的数字进行转化: 全部*2
// let new2Nums = []
// for (let n of newNums) {
// new2Nums.push(n * 2)
// }
//
// console.log(new2Nums);
//
//
// // 3.需求:将所有new2Nums数字相加,得到最终的记过
// let total = 0
// for (let n of new2Nums) {
// total += n
// }
//
// console.log(total);
// --------------------------------------------------------------------------------------------
// filter/map/reduce
// filter中的回调函数有一个要求: 必须返回一个boolean值
// true: 当返回true时, 函数内部会自动将这次回调的n加入到新的数组中
// false: 当返回false时, 函数内部会过滤掉这次的n
const nums = [10, 20, 111, 222, 444, 40, 50]
// let total = nums.filter(n => n < 100).map(n => n * 2).reduce((pre, n) => pre + n);
// console.log(total);
// let total = nums.filter(function (n) {
// return n < 100
// }).map(function (n) {
// return n * 2
// }).reduce(function (prevValue, n) {
// return prevValue + n
// }, 0)
// console.log(total);
// 1.filter函数的使用
// 10, 20, 40, 50
let newNums = nums.filter(function (n) {
return n < 100
})
console.log(newNums);
// 2.map函数的使用
// 20, 40, 80, 100
let new2Nums = newNums.map(function (n) { // 20
return n * 2
})
console.log(new2Nums);
// 3.reduce函数的使用
// reduce作用对数组中所有的内容进行汇总
let total = new2Nums.reduce(function (preValue, n) {
return preValue + n
}, 0)
console.log(total);
// 第一次: preValue 0 n 20
// 第二次: preValue 20 n 40
// 第二次: preValue 60 n 80
// 第二次: preValue 140 n 100
// 240
filter
let newNums = nums.filter(function (n) {
return n < 100
})
filter中的回调函数有一个要求: 必须返回一个boolean值
true: 当返回true时, 函数内部会自动将这次回调的n加入到新的数组中
false: 当返回false时, 函数内部会过滤掉这次的n
map
let new2Nums = newNums.map(function (n) { // 20
return n * 2
})
map:对数组对中的值进行操作,将操作后的数放入新数组
reduce
let total = new2Nums.reduce(function (preValue, n) {
return preValue + n
}, 0)
reduce作用对数组中所有的内容进行汇总
总结
filter、map、reduce 传入参数都是一个函数
(reduce有第二个参数) 为preValue的初始值
filter的回调函数的返回值是一个布尔值,filter返回的是一个过滤后的数组
map、reduce的回调函数的返回值是一个值,map返回的是回调函数的返回值的数组
- 本文链接:http://horry233.github.io/2020/10/14/js%E7%9A%84%E9%AB%98%E9%98%B6%E5%87%BD%E6%95%B0/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。
若没有本文 Issue,您可以使用 Comment 模版新建。
GitHub Issues