Sete métodos para remover duplicação de arrays?

1. Use new Set() para remover duplicatas

let arr = [1, 2, 2, 3, 4, 7, 9, 9];
let unique= [...new Set(arr)];  // ...展开运算符
// let unique= Array.from(new Set(arr));  //  也可用Array.from()
console.log(unique); // [1, 2, 3, 4, 7, 9];

2.forEach() e indexOf()

let arr = [1, 2, 2, 3, 4, 7, 9, 9];
let unique = [];
arr.forEach(item => {
    
    
  if (unique.indexOf(item) === -1) {
    
    
    unique.push(item);
  }
});
console.log(unique); // [1, 2, 3, 4, 7, 9]

3.filter() e indexOf()

let arr = [1, 2, 2, 3, 4, 7, 9, 9];
let unique = arr.filter((item, index) => arr.indexOf(item) === index);
console.log(unique); // [1, 2, 3, 4, 7, 9]

4. Combinação de reduzir() e Array.includes()

let arr = [1, 2, 2, 3, 4, 7, 9, 9];
let unique = arr.reduce((pre, item) => (pre.includes(item) ? pre : [...pre, item]), []);
console.log(unique); // [1, 2, 3, 4, 7, 9]

5. Aproveite as características únicas das propriedades dos objetos

let arr = [1, 2, 2, 3, 4, 7, 9, 9];
let obj = {
    
    };
arr.forEach(item => (obj[item] = "123"));
let unique = Object.keys(obj).map(item => parseInt(item));
// let unique = Object.keys(obj).map(item => ~~item); // 别人看不懂写法
console.log(unique); // [1, 2, 3, 4, 7, 9]

6. Use dois níveis de loops for

Princípio: Determine se os elementos são iguais. Se forem iguais, salte do loop interno e entre no loop externo. Se não forem iguais, adicione os elementos ao array exclusivo.

let arr = [1, 2, 2, 3, 4, 7, 9, 9];
let unique = [];
for (let i = 0; i < arr.length; i++) {
    
    
  for (let j = i + 1; j < arr.length; j++) {
    
    
    if (arr[i] === arr[j]) i++;
  }
  unique.push(arr[i]);
}
console.log(unique); // [1, 2, 3, 4, 7, 9]

7. Desduplicação de matriz classificada

Princípio: Classifique o array (os elementos adjacentes ficarão próximos uns dos outros após a classificação), então compare os elementos adjacentes para ver se eles são iguais, descarte-os se forem iguais; caso contrário, adicione-os ao array único

let arr = [1, 2, 2, 3, 4, 7, 9, 9];
let unique = [];
let temp = arr.sort();
for (let i = 0; i < temp.length; i++) {
    
    
  if (temp[i] !== temp[i + 1]) unique.push(arr[i]);
}
console.log(unique); // [1, 2, 3, 4, 7, 9]

Acho que você gosta

Origin blog.csdn.net/qq_53509791/article/details/130924802
Recomendado
Clasificación