¿Cuántas soluciones conoce sobre la deduplicación de arreglos?

Método 1: A través del conjunto

// 借助Set实现数组去重
const arr = [2,3,5,6,8,6,8,2,9];

const unique = [...new Set(arr)]
console.log(unique);  // [2,3,5,6,8,9]

Método 2: A través del objeto

Primero, deje que cada elemento de la matriz a deduplicar sea igual a la clave y el valor en el objeto. Si ya existe, elimine la matriz a través del empalme. En este momento, debe prestar atención al cambio del subíndice.

// 通过对象实现数组去重
const arr = [2,3,5,6,8,6,8,2,9];
const obj = {
    
    };

for (let i = 0; i < arr.length; i++) {
    
    
    const item = arr[i]
    if (obj[item]) {
    
    
        arr.splice(i,1);
        i--;
    } else {
    
    
        obj[item] = item
    }
}
console.log(arr); // [2,3,5,6,8,9]

Método 3: use la relación entre indexOf y -1 para atravesar

// 利用indexOf和-1的关系实现数组去重
const arr = [2,3,5,6,8,6,8,2,9];

const res = [];
arr.forEach(item => {
    
    
    if (res.indexOf(item) === -1) {
    
    
        res.push(item);
    }
})
console.log(res);  // [2,3,5,6,8,9]

Método 4: Usar la relación entre filter e indexOf

// 利用filter和indexOf结合
const arr = [2,3,5,6,8,6,8,2,9];
const unique = arr.filter((item,index) => {
    
    
    return arr.indexOf(item) === index
})
console.log(unique);  // [2,3,5,6,8,9]

Método 5: Usar ordenación + empalme

// 利用sort + splice
const arr = [2,3,5,6,8,6,8,2,9];

arr.sort((next,pre) => next - pre);

for (let i = 0;i < arr.length; i++) {
    
    
    if (arr[i] === arr[i + 1]) {
    
    
        arr.splice(i,1);
        i--;
    }
}
console.log(arr);  // [2,3,5,6,8,9]

Método 6: Con la ayuda de Map

// 借助Map
const arr = [2,3,5,6,8,6,8,2,9];
const map = new Map();
const unique = [];

for (let v of arr) {
    
    
    if (!map.has(v)) {
    
    
        map.set(v,true);
        unique.push(v)
    }
}
console.log(unique);  //[2,3,5,6,8,9]

Método 7: Con la ayuda de reduce + include

// 借助reduce + includes
const arr = [2,3,5,6,8,6,8,2,9];

const unique = arr.reduce((pre,cur) => {
    
    
    return pre.includes(cur) ? pre : [...pre,cur]
},[])

console.log(unique);  // [2,3,5,6,8,9]

Deduplicación de matriz de tipos de datos complejos con JSON.stringify

// 复杂数据类型借助 JSON.stringify
const arr = [2,3,5,6,8,6,8,[7],[7],2,9];
const unique = [];
arr.forEach(item => {
    
    
    let flag = false;
    unique.forEach(item1 => {
    
    
        if (JSON.stringify(item1) === JSON.stringify(item)) {
    
    
            flag = true;
        }
    })
    if (!flag) {
    
    
        unique.push(item);
    }
})
console.log(unique);  // [2,3,5,6,8,[7],9]

Supongo que te gusta

Origin blog.csdn.net/sinat_41696687/article/details/123669765
Recomendado
Clasificación