JavaScript笔记-高阶函数

JavaScript笔记-高阶函数

https://www.liaoxuefeng.com/wiki/1022910821149312基于廖雪峰老师的教程所做的笔记。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>高阶函数的操作展示</title>
</head>
<body>

<script>

    /*高阶函数:用别的函数(函数也是变量)当参数的函数*/
    function get1() {
        return 1;
    }

    function plus1(x,f) {//这里的f是个函数,plus1就是个高阶函数
        console.log(x+f());//f的调用格式是:f(参数)
    }
    plus1(2,get1);//调用plus1,结果为3

    /*数组的高阶函数:map()*/
    console.log("arr.map():");
    var num=[1,2,3,4];
    //回调函数function()可以接受3个参数,通常只用一个,第一个参数代表数组中的每个元素,第二个参数代表元素下标
    //第三个参数代表数组本身
    var result=num.map(function(x){//对num中的每个元素,用function处理,其返回值当做该元素的新值
        return x*x;
    });//Array.map(function(){})返回一个新的数组

    for(var val of result){
        console.log(val);
    }//结果为1 4 9 16

    /*数组的高阶函数:reduce()*/
    console.log("arr.reduce():");
    var newNum=[1,2,3,4];
    var newResult=newNum.reduce(function(x,y){//(((1+2)+3)+4)
        return x+y;
    });//返回一个最终累积的计算结果
    console.log(newResult);//结果为10

    /*数组的高阶函数:filter()*/
    console.log("arr.filter():");
    var stature=[2,3,6,8,1];
    var statureResult=stature.filter(function(x){//函数筛选>5的元素
       if(x>5)
           return true;
    });
    console.log(statureResult);

    /*数组的高阶函数:sort()*/
    console.log("arr.sort():");
    /*arr.sort()默认把arr中每个元素当成字符串再排序,所以不明白机制的情况下容易用错
    * 一般用法如下:
    * */
    var order=[2,3,1,5,4];
    var orderResult=order.sort(function(x,y){//比较两两元素大小,根据返回值-1,0,1排序
       if(x<y){//这样是把大的放前面,和C++排序函数写法完全相反!!
           // JS当中true/false貌似和1/0不能转换
           return 1;
       }
       else if(x==y){
           return 0;
       }
       else{
           return -1;
       }
    });
    console.log(orderResult);//结果为[5,4,3,2,1]

    /*数组的高阶函数:every()*/
    console.log("arr.every():");
    /*arr.every()判断是否每个元素都符合特定条件,返回boolean*/
    var weight=[2,3,8,1,5,9];
    var weightResult=weight.every(function(x){
        if(x>5)
            return true;
    });
    console.log(weightResult);//结果为false

    /*数组的高阶函数:find()*/
    console.log("arr.find():");
    /*arr.find()查找符合特定条件的第一个元素,再返回这个元素*/
    var height=[5,2,1,2];
    var heightResult=height.find(function (x) {
        if(x===2)//查找===2的元素
            return true;
    });
    console.log(heightResult);//返回2,要是没找到会返回undefined

    /*数组的高阶函数:findIndex()*/
    console.log("arr.findIndex():");
    /*arr.findIndex()返回第一个符合特定条件元素的下标,没找到的话返回-1*/
    var person=["John","Lucy","Bob","Sang"];
    var personResult=person.findIndex(function(x){
       if(x==="Sang")
           return true;
    });
    console.log(personResult);//结果为3

    /*数组的高阶函数:forEach()*/

    /*arr.forEach()和arr.map()的作用一样,不过前者不返回新的数组*/
</script>
</body>
</html>
发布了40 篇原创文章 · 获赞 10 · 访问量 1886

猜你喜欢

转载自blog.csdn.net/qq_40677317/article/details/105551392