1.使用ES6的Set数据结构
function removeDuplicates(array) {
return [...new Set(array)];
}
// 使用示例
const arr = [1, 2, 2, 3, 4, 4, 5, 5, 5];
const uniqueArr = removeDuplicates(arr);
console.log(uniqueArr); // 输出: [1, 2, 3, 4, 5]
2.使用filter()方法和indexOf()方法
这种方法通过遍历数组,并使用indexOf()检查当前元素是否首次出现来实现去重。
function removeDuplicates(array) {
return array.filter((item, index) => {
return array.indexOf(item) === index;
});
}
const arr = [1, 2, 2, 3, 4, 4, 5, 5, 5];
const uniqueArr = removeDuplicates(arr);
console.log(uniqueArr); // 输出: [1, 2, 3, 4, 5]
3.使用reduce()方法
reduce()方法可以将数组元素组合成一个新值,我们可以利用它来创建一个没有重复元素的数组。
function removeDuplicates(array) {
return array.reduce((accumulator, current) => {
if (!accumulator.includes(current)) {
accumulator.push(current);
}
return accumulator;
}, []);
}
const arr = [1, 2, 2, 3, 4, 4, 5, 5, 5];
const uniqueArr = removeDuplicates(arr);
console.log(uniqueArr); // 输出: [1, 2, 3, 4, 5]
4.使用Map数据结构
Map对象允许你存储键值对,并且键是唯一的。我们可以利用这个特性去除重复元素
function removeDuplicates(array) {
const map = new Map();
array.forEach(item => map.set(item, true));
return Array.from(map.keys());
}
const arr = [1, 2, 2, 3, 4, 4, 5, 5, 5];
const uniqueArr = removeDuplicates(arr);
console.log(uniqueArr); // 输出: [1, 2, 3, 4, 5]
5.使用两层循环
这种方法通过两层循环来比较和删除重复的元素,虽然效率不如前面提到的方法,但在一些简单的场景下仍然可以使用。
function removeDuplicates(array) {
for (let i = 0; i < array.length; i++) {
for (let j = i + 1; j < array.length; j++) {
if (array[i] === array[j]) {
array.splice(j, 1);
j--; // 因为删除了一个元素,所以索引需要回退一位
}
}
}
return array;
}
const arr = [1, 2, 2, 3, 4, 4, 5, 5, 5];
const uniqueArr = removeDuplicates(arr);
console.log(uniqueArr); // 输出: [1, 2, 3, 4, 5]