reduce常用方法

reduce 常用方法

介绍

reduce()是数组的一个高阶方法,它用于将数组的每个元素按照指定的规则进行累积计算,最终返回一个单一的结果。reduce()方法接受一个回调函数作为参数,并可选地接受一个初始值。
回调函数 接受四个参数:
累积器 (accumulator):累积计算的结果,也称为累加值。
当前值 (currentValue):当前正在处理的数组元素。
当前索引 (currentIndex):当前正在处理的数组元素的索引。
原始数组 (array):调用reduce()方法的数组。

如果 initialValue 在调用 reduce() 时被提供,那么第一个 preValue 等于 initialValue ,并且curValue 等于数组中的第一个值;如果initialValue 未被提供,那么preValue 等于数组中的第一个值.

一、去重

1.1 普通数组去重(用set更简单)

var arr = [1,2,3,3,2,1,4]
arr.reduce((acc, cur) => {
  if (!(acc.includes(cur))) {
    acc.push(cur)
  }
  return acc
}, [])
// [1, 2, 3, 4]

1.2 对象数组去重

// 原始对象数组
const originalArray = [
  { id: 1, name: 'Apple' },
  { id: 2, name: 'Banana' },
  { id: 3, name: 'Apple' },
  { id: 4, name: 'Orange' },
  { id: 5, name: 'Banana' }
];

// 根据name字段进行去重
const uniqueArray = originalArray.reduce((acc, curr) => {
  // 通过Set对象来判断是否已经存在相同name的对象
  const isExist = acc.some(obj => obj.name === curr.name);
  
  // 如果不存在相同name的对象,则将当前对象添加到结果数组中
  if (!isExist) {
    acc.push(curr);
  }
  return acc;
}, []);

console.log(uniqueArray);

// 输出结果
[
  { id: 1, name: 'Apple' },
  { id: 2, name: 'Banana' },
  { id: 4, name: 'Orange' }
]

1.3 对象数组去重并合并

// 对name值相同的对象进行合并
const aass = [
  { name: '氯化钠', num: 20 },
  { name: '钙化片', num: 18 },
  { name: '阿莫西林', num: 12 },
  { name: '阿莫西林', num: 30 },
  { name: '氯化钠', num: 23 }
];

const mergedArray = aass.reduce((acc, curr) => {
  const existingObj = acc.find(obj => obj.name === curr.name);

  if (existingObj) {
    existingObj.num += curr.num;
  } else {
    acc.push(curr);
  }

  return acc;
}, []);

console.log(mergedArray);

// 输出结果
[
  { name: '氯化钠', num: 43 },
  { name: '钙化片', num: 18 },
  { name: '阿莫西林', num: 42 }
]

最后:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值