for循环
filter()
、map()
、reduce()
、链式编程、箭头函数
filter()
中的回调函数有一个要求,必须返回一个boolean值,
true:当返回为true时,函数内部会自动将这次回调的n加入到新的数组中,
false:当返回为false时,函数内部会过滤掉这次的n
map()
作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的f(x)=x2,还可以计算任意复杂的函数,比如,把Array的所有数字转为字符串
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.map(String); // ['1', '2', '3', '4', '5', '6', '7', '8', '9']
reduce()
把一个函数作用在这个Array的[x1, x2, x3…]上,这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算
var arr = [1, 3, 5, 7, 9]; arr.reduce(function (x, y) { return x + y; }); // 25
高阶函数 filter/map/reduce的实例
<script type="text/javascript"> const num = [10,20,111,222,444,40,50] // 1,需求:取出所有小于100的数字 // var num11 = []; // for(let n of num){ // if(n<100){ // num11.push(n) // } // } // filter中的回调函数有一个要求,必须返回一个boolean值, // true:当返回为true时,函数内部会自动将这次回调的n加入到新的数组中, // false:当返回为false时,函数内部会过滤掉这次的n let num11 =num.filter(function(n){ return n < 100 }) console.log(num11) // 2,需求:将所有小于100的数字进行转化:全部*2 // var num22 = []; // for(let n of num11){ // num22.push(n*2) // } let num22 = num11.map(function(n){ return n*2 }) console.log(num22) // 3,需求:将步骤2中所有的数字相加,得到最终的结果 // var num33 = 0; // for(let n of num22){ // num33 +=n // } // reduce函数的使用 // reduce作用对数组中的所有内容进行汇总 // preval 上一次函数的返回值 let num33 = num22.reduce(function(preval,n){ return preval + n },0) console.log(num33) // 综合,链式编程 // let total = num.filter(function(n){ // return n < 100 // }).map(function(n){ // return n*2 // }).reduce(function(preval,n){ // return preval + n // },0) // console.log(total) // 箭头函数 // let total = num.filter(n => n<100).map(n => n*2).reduce((preval,n) => preval+n) // console.log(total) </script>
参考:https://www.liaoxuefeng.com/wiki/1022910821149312/1023021271742944