- ES6提供的Set是一组唯一值的集合,每个值仅能出现一次;
let arr = [5, 7, 8, 4, 1, 5, 2, 4, 1, 2, 3, 5, 4, 6, 7, 8, 9, 1];
function unique(array) {
return Array.from(new Set(array));
};
unique(arr); //[5, 7, 8, 4, 1, 5, 2, 4, 1, 2, 3, 5, 4, 6, 7, 8, 9, 1]2. 使用filter方法 使用数组的filter方法可以创建一个新数组,该新数组只包含原数组中不重复的元素:
let arr = [5, 7, 8,"小白", 4, 1, 5, 2, 4,"小白", 1, 2, 3, 5, 4, 6, 7, 8, 9, 1];
const uniqueArray = arr.filter((item, index, self) => {
// 值为true时第一次出现,为值false时重复出现
return self.indexOf(item) === index;
});
console.log(uniqueArray); //[5, 7, 8, '小白', 4, 1, 2, 3, 6, 9]3. 使用forEach方法 使用forEach方法遍历原数组,将不重复的元素添加到一个新数组中,
let arr = [5, 7, 8,"小白", 4, 1, 5, 2, 4,"小白", 1, 2, 3, 5, 4, 6, 7, 8, 9, 1];
function unique(array) {
let arr = [];
array.forEach(item => {
if (!arr.includes(item)) {
// 判断条件可用 arr.indexOf(item) == -1 代替
arr.push(item)
};
})
return arr;
}
unique(arr); //[5, 7, 8, '小白', 4, 1, 2, 3, 6, 9]
4. 用两个for循环嵌套,搭配splice方法删除重复的值
let arr = [5, 7, 8, 4, 1, 5, 2, 4, 1, 2, 3, 5, 4, 6, 7, 8, 9, 1];
function unique(array) {
for (let i = 0; i < array.length; i++) {
for (let j = i + 1; j < array.length; j++) {
if (array == array[j]) {
array.splice(j, 1);
j--;
}
}
}
return array;
}
unique(arr); //[5, 7, 8, 4, 1, 5, 2, 4, 1, 2, 3, 5, 4, 6, 7, 8, 9, 1] |