发表于: 2020-06-26 22:18:49
1 2391
今日完成
//声明一个数组
const nums = [10, 20, 111, 222, 333, 40, 50]
// //需求1:取出所有小于100的数字
// let newNums = [] //新声明一个数组,用来接收小于100的数字
// for (let n of nums) {
// if (n < 100){
// newNums.push(n)
// }
// // console.log(newNums)//遍历7次,显示每一次的遍历结果
// }
// console.log(newNums);//在循环外打印就直接打印最终结果,
// //需求2:将所有小于100的数字全部进行转化:全部*2
// // newNums[]
// //不能把原来的数组直接拿来用,遍历之前就把数组复空了,遍历的就是一个空数组
// let new2Nums =[]//声明新数组接收数据
// for (let n of newNums){
// new2Nums.push(n * 2)
// }
// //需求3:将所有new2Nums数字相加,得到最终结果
// let total = 0
// for (let n of new2Nums){
// total += n
// }
// console.log(total);//最终结果
//上述是一般应用
//filter的使用,需求1
//filter括号里要传入一个另一(回调)函数,这里每一次遍历数字的时候就会执行一次回调函数
//filter中的回调函数有一个要求: 必须返回一个boolean值
//true:当返回ture时,函数内部会自动将这次回调的n加入到新的数组中
//false:当返回false,函数内部会过滤掉这次的n
//描述:返回ture所代表的值(可以直接写判断表达式),
//作为filter的返回值,加入到数组里面
//只需要在函数前面新声明一个数组接收数据
let newNums = nums.filter(function (n) {
// return true//这样是跟原来数组一样
return n < 100 //这里遍历7次(数组数字个数),依次判断,n是否小于100
//小于100为true,就把为true的数字放到新数组中
})
console.log(newNums); //打印出来的就是小于100的数组
//map函数的使用,需求2
//map括号里要传入一个另一(回调)函数,这里每一次遍历数字的时候就会执行一次回调函数
//描述:map()函数中,会把括号内返回的值作为数组新的值,如直接return 100,
//本实例数组new2Nums就会返回4个100
let nn = newNums.map(function (n) {
return 100
})
console.log(nn);
let new2Nums = newNums.map(function (n) {
return n * 2
})
console.log(new2Nums)
//reduce函数的使用
//reduce作用对数组中所有内容进行汇总(如:全部相加,全部相乘等)
//要传两个参数
//new2Nums.reduce(参数一,参数二)
// new2Nums.reduce(function(preValue,n){
// return 100
// },0)
//参数一是整个function()的函数,参数二是后面0,代表初始化值是0,
//而不是function括号中的两个参数
//实例中遍历4次
//第一次: preValue 0 n 20 (0是第二个参数,初始化值为0,20是数组中第一个数字)
//第二次: preValue 100 n 40(preValue的值是函数上一次回调return的值,这里写死100)
//第三次: preValue 100 n 80
//第四次: preValue 100 n 100
//所以汇总就可以这样写
let total = new2Nums.reduce(function (preValue, n) {
return preValue + n
}, 0)
//套用上述步骤
console.log(total);
//三个函数把之前三个需求的代码替换掉了
//合起来使用,函数式编程
let aa = nums.filter(function (n) {
return n < 100
}).map(function (n) { //直接对上一个函数返回的值进行操作
return n * 2
}).reduce(function (preValue, n) {
return preValue + n
}, 0)
console.log(aa);
//还可以这样写,一行
let bb = nums.filter(n => n < 100).map(n => n * 2).reduce((pre, n) => pre + n);
console.log(bb);
评论