返回
彻底杜绝重复元素:来这里就对啦!
前端
2023-09-16 07:39:04
消灭重复元素的万全之策
重复元素总是如影随形,让我们的数据处理变得复杂而繁琐。但是,不用担心!我们为你准备了市面上所有有效的去重复方法,助你轻松去除重复元素,让数据焕然一新。
一、简单去重:最基础的起点
简单去重法就像是一位经验丰富的清洁工,它逐一检查数组中的元素,将重复的元素逐个剔除。这种方法虽然简单,却非常有效,尤其适用于小规模数组的去重操作。
function simpleUnique(array) {
let uniqueArray = [];
for (let i = 0; i < array.length; i++) {
if (uniqueArray.indexOf(array[i]) === -1) {
uniqueArray.push(array[i]);
}
}
return uniqueArray;
}
二、ES6 最简洁去重:一劳永逸的解决之道
ES6 的出现为我们带来了许多简洁而强大的语法特性,其中之一就是 Set 数据结构。Set 具有自动去重的特性,这意味着它可以轻松去除数组中的重复元素。
const uniqueArray = [...new Set(array)];
三、filter+indexOf 去重:灵活多变的去重利器
filter+indexOf 组合技是另一个非常实用的去重方法。它利用 filter 函数过滤出数组中不包含重复元素的项,并利用 indexOf 函数检查每个元素是否已经存在于数组中。
function uniqueWithFilter(array) {
return array.filter((item, index) => array.indexOf(item) === index);
}
四、reduce+includes 去重:函数式编程的去重之美
reduce+includes 组合技将函数式编程的思想与数组去重的需求巧妙地融合在一起。它使用 reduce 函数将数组中的元素逐个累积到一个新的数组中,同时利用 includes 函数检查每个元素是否已经存在于累积数组中。
function uniqueWithReduce(array) {
return array.reduce((uniqueArray, item) => {
if (!uniqueArray.includes(item)) {
uniqueArray.push(item);
}
return uniqueArray;
}, []);
}
五、for 嵌套 for+splice 去重(ES5):经典之作,永不过时
虽然 ES6 的出现为我们带来了许多简洁而强大的语法特性,但对于一些浏览器兼容性要求较高的场景,我们仍然需要使用经典的 for 嵌套 for+splice 组合技来实现数组去重。
function uniqueWithNestedFor(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;
}
结语
无论你是想要处理简单的小规模数组,还是需要应对庞大而复杂的数组,我们为你提供的这些去重复方法都能满足你的需求。根据你的具体场景和需求,选择最适合你的方法,让重复元素彻底消失,让你的数据更加纯净。