JavaScript 高级函数

时间:2022-07-28
本文章向大家介绍JavaScript 高级函数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

JavaScript的高阶函数

Reduce

reduce 的语法:

Array.reduce(callback, init)

callback里包含了四个参数

  1. previousValue 上一次调用的返回值
  2. currentValue 当前处理的元素的值
  3. index 当前元素的索引
  4. array 调用reduce的数组
  5. initialValue参数,默认从第二个元素开始

我们常用的数组求和

求一个数组的合计, 我们常用的方式是用 for 循环

var arr = [1, 2, 5, 4, 7, 10, 1];
function sum(arr) {
  let total = 0;
  for (let i = 0; i < arr.length; i++) {
    total += arr[i];
  }
  return total;
}

求一个数组的合计,如果数组里的元素是对象,那么用 of 去求和会更好

var arr2 = [{ amount: 20 }, { amount: 30 }];
function sum2(arr) {
  let total = 0;
  for (const item of arr) {
    total += item;
  }
  return total;
}

Reduce数组求和

function sum3(arr) {
  return arr.reduce((pre, cur) => pre + cur);
}

用 reduce 则用 很少 的代码解决,尤其是采用了 ==es6== 语法后,更加简单

但是 reduce 并不仅此而已,还有很多高级使用方法

统计每个元素出现次数

function count(arr) {
  return arr.reduce((pre, cur) => {
    if (cur in pre) {
      pre[cur]++;
    } else {
      pre[cur] = 1;
    }
    return pre;
  }, []);
}

数组去重

function distinct(arr) {
  return arr.reduce((pre, cur) => {
    if (pre.includes(cur)) {
      return pre;
    } else {
      return pre.concat(cur);
    }
  }, []);
}

待更新