返回

高逼格的数组方法reduce解析及运用

前端

关键词:

reduce()方法接受两个参数:一个回调函数和一个初始值。回调函数对数组中的每个元素执行相同的操作,并返回一个中间结果。初始值是累积计算的起点,如果未指定初始值,则会使用数组中的第一个元素作为初始值。

reduce()方法的回调函数有四个参数:

  • pre:前一个累积结果
  • cur:当前元素
  • index:当前元素的索引
  • arr:原数组

回调函数可以根据需要使用这些参数来计算中间结果。最终,reduce()方法将返回回调函数返回的最后一个中间结果作为最终结果。

reduce()方法可以用来解决各种问题,例如:

  • 求数组中所有元素的和
  • 求数组中最大值或最小值
  • 统计数组中元素出现的次数
  • 将数组中的元素连接成一个字符串
  • 过滤数组中的元素

reduce()方法的用法非常灵活,可以根据实际需要进行各种变形。掌握reduce()方法可以让你在编码中更加游刃有余,并写出更加简洁高效的代码。

下面是一些reduce()方法的实际应用实例:

  • 求数组中所有元素的和
const numbers = [1, 2, 3, 4, 5];

const sum = numbers.reduce((pre, cur) => pre + cur, 0);

console.log(sum); // 15
  • 求数组中最大值或最小值
const numbers = [1, 2, 3, 4, 5];

const max = numbers.reduce((pre, cur) => Math.max(pre, cur), -Infinity);

console.log(max); // 5

const min = numbers.reduce((pre, cur) => Math.min(pre, cur), Infinity);

console.log(min); // 1
  • 统计数组中元素出现的次数
const fruits = ['apple', 'banana', 'apple', 'orange', 'banana'];

const counts = fruits.reduce((pre, cur) => {
  if (pre[cur]) {
    pre[cur]++;
  } else {
    pre[cur] = 1;
  }

  return pre;
}, {});

console.log(counts); // { apple: 2, banana: 2, orange: 1 }
  • 将数组中的元素连接成一个字符串
const words = ['hello', 'world', '!'];

const sentence = words.reduce((pre, cur) => pre + ' ' + cur, '');

console.log(sentence); // "hello world !"
  • 过滤数组中的元素
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const evenNumbers = numbers.reduce((pre, cur) => {
  if (cur % 2 === 0) {
    pre.push(cur);
  }

  return pre;
}, []);

console.log(evenNumbers); // [2, 4, 6, 8, 10]

reduce()方法是一个非常强大的工具,可以用来解决各种各样的问题。掌握reduce()方法可以让你在编码中更加游刃有余,并写出更加简洁高效的代码。