zoukankan      html  css  js  c++  java
  • JavaScript中的高阶函数

    1、map/reduce

    map就是把一个相同的操作,作用到一个数组上

    'use strict';
    
    function pow(x) {
        return x * x;
    }

    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    var results = arr.map(pow); // [1, 4, 9, 16, 25, 36, 49, 64, 81]
    console.log(results);

    注意:map()传入的参数是pow,即函数对象本身。

    reduce:Array的reduce()把一个函数作用在这个Array[x1, x2, x3...]上,这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算

    [x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)
    例如求和,求积
    2、filter
    filter也是一个常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。
    map()类似,Arrayfilter()也接收一个函数。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。
    var arr = [1, 2, 4, 5, 6, 9, 10, 15];
    var r = arr.filter(function (x) {
        return x % 2 !== 0;
    });
    r; // [1, 5, 9, 15]

    filter()接收的回调函数,其实可以有多个参数。通常我们仅使用第一个参数,表示Array的某个元素。回调函数还可以接收另外两个参数,表示元素的位置和数组本身
    var arr = ['A', 'B', 'C'];
    var r = arr.filter(function (element, index, self) {
        console.log(element); // 依次打印'A', 'B', 'C'
        console.log(index); // 依次打印0, 1, 2
        console.log(self); // self就是变量arr
        return true;
    });

    用于数组元素去重
    'use strict';
    var r, arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];

    r = arr.filter(function (element, index, self) {
    return self.indexOf(element) === index;
    });

    去除重复元素依靠的是indexOf总是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了。

    3、sort

    sort()方法也是一个高阶函数,它还可以接收一个比较函数来实现自定义的排序

    'use strict';
    
    var arr = [10, 20, 1, 2];

    arr.sort(function (x, y) {
    if (x < y) {
    return -1;
    }
    if (x > y) {
    return 1;
    }
    return 0;
    });
    console.log(arr); // [1, 2, 10, 20]

     

     

  • 相关阅读:
    类目(分类)
    协议(Protocol)---实例
    OC 复合 组装电脑
    iOS--九宫格奥秘(UIView)(arc4random)
    字符串
    oc 字符串
    七星彩问题
    OC--第一个程序
    关于行内元素垂直居中的一个小小trick
    关于orgChart
  • 原文地址:https://www.cnblogs.com/gopark/p/10156472.html
Copyright © 2011-2022 走看看