uniapp从数组中删除重复项

在 UniApp(或任何使用 JavaScript 的环境中)从数组中删除重复项,你可以使用多种方法。以下是一些常见的方法:

1. 使用 filter()indexOf()

你可以使用 Array.prototype.filter() 方法结合 Array.prototype.indexOf() 方法来创建一个新数组,该数组只包含原始数组中的唯一元素。

let arr = [{ id: 1, name: 'Alice' },{ id: 2, name: 'Bob' },{ id: 1, name: 'Alice' }, // 重复项// ...
];// 假设我们要根据 'id' 属性去重
let uniqueArr = arr.filter((item, index, self) => {return self.findIndex(t => t.id === item.id) === index;
});console.log(uniqueArr);

2. 使用 Set 对象和 JSON.stringify()

如果你的对象可以安全地转换为字符串(即它们的属性顺序不重要,且没有函数或循环引用),你可以先将对象转换为字符串,然后使用 Set 对象来去重,最后再将字符串转回对象。但请注意,这种方法可能不适用于包含复杂数据结构的对象。

let arr = [{ id: 1, name: 'Alice' },{ id: 2, name: 'Bob' },{ id: 1, name: 'Alice' }, // 重复项// ...
];let uniqueArr = [...new Set(arr.map(item => JSON.stringify(item)))].map(item => JSON.parse(item));console.log(uniqueArr);

3. 使用 reduce() 方法

你也可以使用 Array.prototype.reduce() 方法来创建一个新的数组,其中只包含唯一的元素。

let arr = [{ id: 1, name: 'Alice' },{ id: 2, name: 'Bob' },{ id: 1, name: 'Alice' }, // 重复项// ...
];let uniqueArr = arr.reduce((accumulator, currentValue) => {const existing = accumulator.find(item => item.id === currentValue.id);if (!existing) {accumulator.push(currentValue);}return accumulator;
}, []);console.log(uniqueArr);

4. 使用第三方库(如 lodash 的 _.uniqBy

如果你在使用像 lodash 这样的第三方库,你可以使用其提供的 _.uniqBy 方法来根据指定的属性去重。

首先,你需要安装 lodash:

npm install lodash --save

然后,在你的代码中:

import _ from 'lodash';let arr = [{ id: 1, name: 'Alice' },{ id: 2, name: 'Bob' },{ id: 1, name: 'Alice' }, // 重复项// ...
];let uniqueArr = _.uniqBy(arr, 'id');console.log(uniqueArr);

选择哪种方法取决于你的具体需求,比如性能、可读性和代码库的现有依赖。如果你正在处理大量数据或性能是一个关键考虑因素,那么你应该测试不同的方法以确定哪种方法在你的特定情况下最有效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/7381.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网络知识】光猫、路由器 和 交换机 的作用和区别?

数字信号:是指自变量是离散的、因变量也是离散的信号,这种信号的自变量用整数表示,因变量用有限数字中的一个数字来表示。在计算机中,数字信号的大小常用有限位的二进制数表示。 模拟信号:模拟信号是指用连续变化的物…

偏微分方程算法之混合边界条件下的差分法

目录 一、研究目标 二、理论推导 三、算例实现 四、结论 一、研究目标 我们在前几节中介绍了Poisson方程的边值问题,接下来对椭圆型偏微分方程的混合边值问题进行探讨,研究对象为: 其中,为矩形区域,为上的连续函数…

巴东电子商务奖励标准!巴东县网红直播基地、电子商务示范企业奖励补贴

巴东电子商务奖励标准!巴东县网红直播基地、电子商务示范企业奖励补贴的内容整理如下:奖励内容较多 查找想了解的奖励可按 CtrlF 然后输入关键词即可 巴东县电子商务发展专项资金支持对象 本项目奖补对象适用于在我县注册、纳税、从事电子商务的商贸类企…

ISIS的基本概念

1.ISIS概述 IS-IS是一种链路状态路由协议,IS-IS与OSPF在许多方面非常相似, 例如运行IS-IS协议的直连设备之间通过发送Hello报文发现彼此,然后建立邻接关系,并交互链路状态信息。 CLNS由以下三个部分组成: CLNP&#xf…

民航无人机证书的含金量

民航无人机证书,尤其是由中国民用航空局飞行标准司直接签发的CAAC无人机执照,具有很高的含金量。 这种驾照是由国家权威机构颁发的,具有很高的权威性,是合法操控无人机的重要依据。 持有CAAC无人机执照的从业人员可以从事无人机相…

VALSE 2024特邀报告内容解析|多模态视觉融合方法:是否存在性能极限?

2024年视觉与学习青年学者研讨会(VALSE 2024)于5月5日到7日在重庆悦来国际会议中心举行。本公众号将全方位地对会议的热点进行报道,方便广大读者跟踪和了解人工智能的前沿理论和技术。欢迎广大读者对文章进行关注、阅读和转发。文章是对报告人…

No space left on device

报错提示 [ERROR] Upload Local File hwzt-third-party-out.jar Failed [ERROR] java.lang.RuntimeException: cp: error writing : No space left on device [ERROR] com.alibabacloud.commons.ssh.sshj.SshjConnection.executeCustomCharset(SshjConnection.java:172) …

flask网站开发计划

我想写一个flask开发网站的合集文章,该网站主要是采集网络上的文章(不同站点,用Python识别出正文内容),然后做成长图形式,发布到flask站点,并提供“下载”按钮,点击下载按钮&#xf…

文档打分系统部署操作手册

后台部署 java 运行环境的安装CentOS系统中安装Java Development Kit (JDK)-CSDN博客Redis的安装,配置文件与配置服务启动以及开机自动运行CentOS 7.9上安装Redis_centos7.9编译安装redis-CSDN博客Mysql的安装,配置文件与配置服务启动以及开机自动运行转…

送给正在入行的小白:最全最有用的网络安全学习路线已经安排上了

在这个圈子技术门类中,工作岗位主要有以下三个方向: 安全研发安全研究:二进制方向安全研究:网络渗透方向 下面逐一说明一下。 第一个方向:安全研发 你可以把网络安全理解成电商行业、教育行业等其他行业一样&#xf…

基于 Spring Boot 博客系统开发(七)

基于 Spring Boot 博客系统开发(七) 本系统是简易的个人博客系统开发,为了更加熟练地掌握 SprIng Boot 框架及相关技术的使用。🌿🌿🌿 基于 Spring Boot 博客系统开发(六)&#x1f…

【RAG 博客】Haystack 中的 DiversityRanker 与 LostInMiddleRanker 用来增强 RAG pipelines

Blog:Enhancing RAG Pipelines in Haystack: Introducing DiversityRanker and LostInTheMiddleRanker ⭐⭐⭐⭐ 文章目录 Haystack 是什么1. DiversityRanker2. LostInTheMiddleRanker使用示例 这篇 blog 介绍了什么是 Haystack,以及如何在 Haystack 框…

AI把OpenAI内斗魔改成晋江文学,插图也能画,最新工具爆火,网友冲崩服务器

AI魔改OpenAI内斗大戏…… 这晋江味儿要冲出屏幕了! Ilya就是这样的人,对待身边的人冷漠如冰,对待工作却不择手段…… △来自知乎Midreal小助手 而且剧情还不那么离谱,AI自由发挥下很多点都符合逻辑。 “所以我们在评估投资回报…

Surya:强大的开源 OCR 文字识别工具

在当今数字化时代,文字识别技术扮演着至关重要的角色。VikParuchuri/surya 便是一款令人瞩目的开源 OCR 文字识别工具。 主要功能: 支持 90 多种语言的文字识别:Surya 具备强大的语言兼容性,能够轻松应对多种语言的文字识别任务&…

翻译《The Old New Thing》 - What are SYSTEM_FONT and DEFAULT_GUI_FONT?

What are SYSTEM_FONT and DEFAULT_GUI_FONT? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20050707-00/?p35013 Raymond Chen 2005年07月07日 在 Windows 编程中,GetStockObject 函数提供了两种特殊的字体:SYST…

【数据库原理及应用】期末复习汇总高校期末真题试卷05

试卷 一、选择题 1.( )是存储在计算机内有结构的数据的集合。 A.数据库系统 B.数据库 C.数据库管理系统 D.数据结构 2.数据库的三级模式结构中,数据库对象—视图是( ) A.外模式 B.内模式 C.存储模式 D.模式 3.在下列关于关系表的陈述中,错误的是(…

解释Java的内存模型,特别是堆(Heap)和栈(Stack)

Java的内存模型定义了如何在Java虚拟机(JVM)中处理数据的存储和动态分配。这个内存模型主要由两个部分组成:栈(Stack)和堆(Heap),此外还有方法区(Method Area&#xff09…

【源码】WordPress主题Modown9.1+Erphpdown17.1虚拟素材资源付费下载

Modown是基于Erphpdownwordpress下载插件开发的一款付费下载资源、付费下载源码、收费附件下载、付费阅读查看隐藏内容的WordPress主题,一款针对收费付费下载资源/付费查看内容/付费阅读/VIP会员免费下载查看/虚拟资源售卖的WordPress主题,一款为erphpdo…

单目标问题的烟花优化算法求解matlab仿真,对比PSO和GA

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 单目标问题的FW烟花优化算法求解matlab仿真,对比PSO和GA。最后将FW,GA,PSO三种优化算法的优化收敛曲线进行对比。 2.测试软件版本以及运行…

20240503解决Ubuntu20.04和WIN10双系统下WIN10的时间异常的问题

20240503解决Ubuntu20.04和WIN10双系统下WIN10的时间异常的问题 2024/5/3 9:33 缘起:因为工作需要,编译服务器上都会安装Ubuntu20.04。 但是因为WINDOWS强悍的生态系统,偶尔还是有必须要用WINDOWS的时候,于是也安装了WIN10。 双系…