下面演示下面四个常用遍历
循环(迭代):forEach((item(值),index(下标))=>{});
foreach遍历数组的话,使用break不能中断循环,使用return也不能返回到外层函数。
过滤器:filter()
汇总:reduce()
映射:map()
现在假设我们有这三个需求
1.需求:将所有小于100的数字
2.需求:将所有小于100的数字进行转化:全部*2
3.需求:将所new2Nums数字相加,得到最终结果
直接代码详细注释
// 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); //二、普通写法 // 1.filter函数的使用 // 把小于100的都筛选出来了 // 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) // 第一次:preValue 0 n 20 // 第二次:preValue 20 n 40 // 第三次:preValue 60 n 80 // 第四次:preValue 140 n 100 //240 console.log(total);
最后补充小知识点
编程范式:命令式编程/声明式编程
编程范式:面向对象编程(第一公民:对象)/函数式编程(第一公民:函数)