登录
首页 >  文章 >  前端

如何用JavaScript根据name属性对数组对象去重并保留重复项?

时间:2025-02-19 19:46:03 423浏览 收藏

本篇文章给大家分享《如何用JavaScript根据name属性对数组对象去重并保留重复项? 》,覆盖了文章的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

如何用JavaScript根据name属性对数组对象去重并保留重复项?

JavaScript数组对象去重:基于name属性保留重复对象

本文介绍如何使用JavaScript处理一个数组对象,根据name属性进行去重,但保留所有具有相同name属性的对象。

以下代码实现了该功能:

const A = [
  { id: 1, name: "张三", address: "北京" },
  { id: 2, name: "李四", address: "上海" },
  { id: 3, name: "张三", address: "杭州" },
  { id: 4, name: "王五", address: "深圳" },
  { id: 5, name: "李四", address: "厦门" },
  { id: 6, name: "张三", address: "广州" },
];

const result = Object.values(A.reduce((acc, cur) => {
  (acc[cur.name] = acc[cur.name] || []).push(cur);
  return acc;
}, {})).filter(item => item.length > 1).flat();

console.log(result);
// 输出结果:
// [
//   { id: 1, name: "张三", address: "北京" },
//   { id: 3, name: "张三", address: "杭州" },
//   { id: 6, name: "张三", address: "广州" },
//   { id: 2, name: "李四", address: "上海" },
//   { id: 5, name: "李四", address: "厦门" }
// ]

这段代码使用了reduce方法将数组对象转换为一个中间对象,键为name属性值,值为包含所有具有该name属性的对象的数组。然后,Object.values方法提取中间对象的值,filter方法过滤掉只有一个对象的数组,最后flat方法将结果展平为一个一维数组。 此方法有效地保留了所有具有重复name属性的对象。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《如何用JavaScript根据name属性对数组对象去重并保留重复项? 》文章吧,也可关注golang学习网公众号了解相关技术文章。

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>