数组对象去重

        // 去重
        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 ]