数组对象去重
// 去重 DeDuplication(arr) { // 缓存用于记录 const cache = []; for (const t of arr) { // 检查缓存中是否已经存在 if (cache.find(c => c.name === t.name && c.status === t.status)) { // 已经存在说明以前记录过,现在这个就是多余的,直接忽略 this.$message.warning(`已经选择状态为${t.status}的文件${t.name}`) continue; } // 不存在就说明以前没遇到过,把它记录下来 cache.push(t); } // 记录结果就是过滤后的结果 return cache; }
普通数组去重
法一:Set结构 + 展开运算符
const arr = [1,2,3,4,3,2,1] let a = [...new Set(arr)] console.log(a) // [ 1, 2, 3, 4 ]
法二:new Set()结构没有重复成员,Array.from方法将 Set 结构转为数组
const arr = [1,2,3,4,3,2,1] let a = Array.from(new Set(arr)) console.log(a) // [ 1, 2, 3, 4 ]
法三:双层遍历
const arr = [1,2,3,4,3,2,1] for (let i = 0;i < arr.length;i++) { for (let j = i + 1;j < arr.length;j++) { if(arr[i] === arr[j]) { arr.splice(j,1) j-- } } } console.log(arr) // [ 1, 2, 3, 4 ]
法四:使用数组的 includes 方法或 indexOf 方法;新建一个数组,判断数组有有没有当前值,没有就添加进去
const arr = [1,2,3,4,3,2,1] let a = [] for (let i = 0;i < arr.length;i++) { // includes 用于判断一个数组中有没有该值,也可以替换成 a.indexOf(arr[i] == -!) if(!a.includes(arr[i])) { a.push(arr[i]) } } console.log(a) // [ 1, 2, 3, 4 ]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了