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]