数组对象去重
// 去重 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 ]