使用数组的 reduce方法,为对象数组去重

使用数组的 reduce方法,为对象数组去重

javascript 复制代码
array = array.reduce((acc, curr) => {

	const isDuplicate = acc.some(item => item.id === curr.id)

	if (!isDuplicate) {
	  acc.push(curr)
	}

	return acc

}, [])

使用reduce方法来过滤重复的数据,并更新array的值

  1. array是一个数组,包含了需要过滤的数据

  2. reduce方法用于对数组进行迭代,并返回一个累积的结果

  3. 在每次迭代中,acc表示累积的结果,curr表示当前正在处理的元素

  4. acc.some(item => item.id === curr.id)用于检查acc中是否已存在具有相同id的元素,

    如果存在,则isDuplicatetrue,否则为false

  5. 如果isDuplicatefalse,则表示当前元素是唯一的,将其添加到acc

  6. 最后,返回更新后的acc作为下一次迭代的累积结果

  7. 最终,reduce方法返回的结果将赋值给array,从而更新了该状态的值

简而言之,这段代码的目的是从array中删除重复的元素,并将更新后的结果存储回array


在这段代码中,reduce方法的第二个参数是一个空数组[],这个空数组是作为reduce方法的初始值,也就是累积的初始值,

在每次迭代中,reduce方法将会将当前元素curr添加到累积结果acc中,由于初始值是一个空数组[],所以在第一次迭代时,累积结果acc也是空数组,

在每次迭代中,reduce方法会根据判断条件将当前元素curr添加到累积结果acc中,或者不添加,

最终,reduce方法返回的累积结果就是过滤后的数组,

因此,array = array.reduce((acc, curr) => { ... }, []) 这段代码的作用是:将过滤后的数组赋值给array,从而更新该状态的值。

相关推荐
To_OC16 小时前
LC 560 和为 K 的子数组:前缀和配哈希表,这对组合我是真的服了
javascript·算法·程序员
明朝百晓生17 小时前
Deep RL learning[2026/8]
开发语言·javascript·人工智能
用户9385156350717 小时前
ESLint 代码规范完全指南——从 AST 原理到 flat config 逐行解析
javascript·后端·代码规范
kyriewen19 小时前
今年裁了16万技术人——但字节前端岗反而涨了23%
前端·javascript·面试
王林不想说话21 小时前
ES6 到 ES2026 全面进阶指南:新特性、原理、示例与工程落地
前端·javascript·面试
WZzz21 小时前
JavaScript 中 this 的「指向」完整教程
javascript
mONESY21 小时前
浏览器里跑 DeepSeek-R1,这份 worker.js 到底写了什么
javascript
用户6919026813391 天前
用浏览器 WebGPU跑DPSK大模型(1) - 模型的下载和前端下载进度的显示
javascript·react.js·架构
夏幻灵1 天前
Vue 2 与 Vue 3 在应用初始化上的设计差异与技术演进
前端·javascript·vue.js
悟空瞎说1 天前
Three.js 架构实践:用 MVC 模式组织你的 3D 应用
前端·javascript