Skip to content

数组求和 -Array reduce

reduce 用法

js
// 传统
function sum1(arr) {
  let res = 0;
  arr.forEach((n) => (res = res + n));
  return res;
}

const arr = [1, 2, 3, 4, 5];
console.log(sum1(arr)); // 15

// reduce 用法
const sum2 = arr.reduce((sum2, curVal, index, arr) => {
  console.log('reduce funciton...');
  console.log('sum2', sum2); // 0 1 3 6 10 15
  console.log('curVal', curVal); // 1 2 3 4 5
  console.log('index', index); // 0 1 2 3 4
  console.log('arr', arr); // [1, 2, 3, 4, 5]

  // 返回值,作为下一次执行时的第一个参数 sum2 的值
  return sum2 + curVal;
}, 0); // 0 初始值

console.log(sum2); // 15

// 简写
const sum3 = arr.reduce((sum3, curVal) => sum3 + curVal, 0);
console.log(sum3); // 15

// 计数
const arr2 = [1, 2, 3, 4, 5, 1, 2, 3, 2];
const count = arr2.reduce((count, val) => {
  return val === 2 ? count + 1 : count;
}, 0);
console.log(count); // 3

// 输出字符串
const arr3 = [
  { name: '张三', age: 20 },
  { name: '李四', age: 21 },
  { name: '小明', age: 22 },
];
const str1 = arr3
  .map((item) => {
    return `${item.name}-${item.age}`;
  })
  .join('\n');
console.log(str1);
// 张三-20
// 李四-21
// 小明-22
const str2 = arr3.reduce((s, item) => {
  return `${s}${item.name}-${item.age}\n`;
}, '');
console.log(str2);
// 张三-20
// 李四-21
// 小明-22

基于 MIT 许可发布