JS中数组的reduce方法

110 阅读1分钟

1.语法

/**
* prev: 初始值或上一次回调的返回值(必需)
* current: 当前处理的元素(必需)
* currentIndex: 当前元素的索引(可选)
* arr: 当前数组对象 (可选)
* initialValue: 传给给函数的初始值(可选)注:如果数组是空数组,不设置initialValue的值会报错
**/
array.reduce(function(prev, current, currentIndex, arr), initialValue)

2.常见用法

2.1.数组乘积和求和

const  arr = [1, 2, 3, 4];
const sum = arr.reduce((x,y)=>x+y)
const mul = arr.reduce((x,y)=>x*y)
console.log( sum ); //求和,10
console.log( mul ); //求乘积,24

2.2. 数组求最大值和最小值

const array = [5, 4, 7, 8, 9, 2];
const max = array.reduce((a, b) => {
  if (a > b) {
    return a;
  }
  return b;
});
const min = array.reduce((a, b) => {
  if (a > b) {
    return b;
  }
  return a;
});
console.log(max); //最大值:9
console.log(min); //最小值:2

2.3.统计数组中各元素出现的次数

const array = ['a', 'b', 'b', 'b', 'a', 'c'];
const result = array.reduce((pre, cur) => {
  const newPre = pre;
  if (cur in newPre) {
    newPre[cur] += 1;
  } else {
    newPre[cur] = 1;
  }
  return newPre;
}, {});
console.log(result); //输出:{a: 2, b: 3, c: 1}

2.4.数组去重

const array = ['a', 'b', 'b', 'b', 'a', 'c'];
  const result = array.reduce((pre, cur) => {
  if (!pre.includes(cur)) {
    return pre.concat(cur);
  }
  return pre;
}, []);
console.log(result); // 输出:['a', 'b', 'c']

2.5.二维数组扁平化

const arr = [[0, 1], [2, 3], [4, 5]];
const newArr = arr.reduce((pre, cur) => {
  const nArr = pre.concat(cur);
  return nArr;
}, []);
console.log(newArr); // 输出:[0, 1, 2, 3, 4, 5]