js 高阶函数(map/reduce/filter/sort)

时间:2021-02-09 18:33:00

1.map - 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值(注:map不会对空数组进行检测,不会改变原始数组)

  语法:array.map(function(currentValue,index,arr), thisValue)

  参数解释:

      currentValue:必须。当前元素的值

      index:可选。当前元素的索引值

      arr:可选。当前元素属于的数组对象

      thisValue:可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue,或者传入 null、undefined,那么回调函数的 this 为全局对象。

  示例: 

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

2.reduce- 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

  语法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

  参数解释:

      total:必需。初始值, 或者计算结束后的返回值。

      currentValue:必需。当前元素

      currentIndex:可选。当前元素的索引

      arr:可选。当前元素所属的数组对象。

      initialValue:可选。传递给函数的初始值

  示例:

var arr = [1, 3, 5, 7, 9];
arr.reduce(function (x, y) {
    return x + y;
}); // 25

 3.filter - 用于把Array的某些元素过滤掉,然后返回剩下的元素。filter()接收一个函数把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素.

 语法:array.filter(function(currentValue,index,arr), thisValue)

  参数解释:

      currentValue:必须。当前元素的值

      index:可选。当前元素的索引值

      arr:可选。当前元素属于的数组对象

      示例:

//在一个Array中,删掉偶数,只保留奇数
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]

4.sort -  用于Array排序。默认把所有元素先转换为String再排序,也可以接收一个比较函数来实现自定义的排序(注:sort()方法会直接对Array进行修改,它返回的结果仍是当前Array

  示例:

//数字大小排序
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]