首页技术数组去重,数组去重最简单的方法

数组去重,数组去重最简单的方法

编程之家2026-06-05694次浏览

其实数组去重的问题并不复杂,但是又很多的朋友都不太了解数组去重最简单的方法,因此呢,今天小编就来为大家分享数组去重的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

数组去重,数组去重最简单的方法

数组去重的5种方法有哪些

数组去重的5种方法如下:

方法一:双重for循环去重

通过两层循环逐一比较元素。外层循环固定当前元素,内层循环从其后开始遍历,若发现重复元素则删除。关键点在于删除后需调整内层循环索引(j--),避免因数组长度变化导致跳过元素。例如,初始数组[1,1,1,3,2,1,2,4]经处理后变为[1,3,2,4]。

方法二:单层for循环结合排序

先对数组排序(默认按字符串排序),使相同元素相邻。再通过单层循环比较相邻元素,若重复则删除。需注意删除后调整外层索引(i--),否则会漏检后续元素。例如,排序后数组[1,1,10,11,2,20,3]经处理后可能保留非预期顺序。

方法三:利用indexOf检测首次出现

数组去重,数组去重最简单的方法

创建空数组newArr,遍历原数组时用indexOf检查元素是否已存在于newArr中。若返回-1(未找到),则将元素加入newArr。时间复杂度为O(n²),适用于小规模数据。例如,原数组[1,2,1,3]处理后为[1,2,3]。

方法四:利用对象属性唯一性

通过对象obj记录已出现元素。遍历数组时,若元素未作为obj的属性存在(返回undefined),则将其加入结果数组newArr,并标记为已存在。时间复杂度为O(n),效率较高。例如,原数组[1,2,2,3]处理后为[1,2,3]。

方法五:标记重复元素后过滤

遍历数组时,若发现重复元素则将其标记为特定值(如0),最后过滤掉标记值。需确保数据中不包含标记值,或替换为其他无效值。例如,原数组[1,1,2,3]处理后可能为[1,2,3](需后续过滤0)。

js数组去重(4种方法)

JS数组去重的四种方法如下:

数组去重,数组去重最简单的方法

方法一:使用Set数据结构去重说明:Set是ES6引入的一种新的数据结构,它类似于数组,但Set中的元素都是唯一的,没有重复值。优点:简单高效,是推荐的去重方式。

方法二:使用双重遍历法去重说明:通过两层循环遍历数组,如果发现相同的元素则跳过,从而实现去重。优点:逻辑简单明了;缺点:效率相对较低,特别是在处理大数据量时。

方法三:利用Array的indexOf方法去重说明:通过遍历数组,对于每一个元素,使用indexOf方法查找其首次出现的位置,如果当前位置与首次位置不同,则说明该元素是重复的,可以删除。优点:实现逻辑较为直接;缺点:需要遍历两次数组,效率不如Set方法。

方法四:使用filter方法结合条件判断去重说明:利用数组的filter方法和条件判断来实现去重。通过定义一个函数作为filter的回调,判断数组中是否已经存在相同的元素,如果存在则返回false,从而过滤掉重复的元素。优点:代码简洁;缺点:需要理解filter方法和条件判断的逻辑。

在实际开发中,可以根据具体需求和场景选择合适的方法。其中,使用Set数据结构去重是最简单高效的方式。

数组去重的5种方法

参考范例:

1、使用“Array.from(new Set(arr))”去重。

示例代码为:

var arr= [1,1,8,8,12,12,15,15,16,16];

function unique(arr){

return Array.from(new Set(arr))

}

console.log(unique(arr))

//[1,8,12,15,16]

2、利用for嵌套for,接着使用splice()方法去重。

示例代码为:

var arr= [1, 1, 8, 8, 12, 12, 15, 15, 16, 16];

function unlink(arr){

for(var i= 0; i< arr.length; i++){//首次遍历数组

for(var j= i+ 1; j< arr.length; j++){//再次遍历数组

if(arr[i]== arr[j]){//判断连个值是否相等

arr.splice(j, 1);//相等删除后者

j--;

}

}

}

return arr

}

console.log(unlink(arr));

3、利用indexOf()方法去重。

示例代码:

var arr= [1, 1, 8, 8, 12, 12, 15, 15, 16, 16];

function unlink(arr){

if(!Array.isArray(arr)){

console.log('错误!')

return

}

var array= [];

for(var i= 0; i< arr.length; i++){//首次遍历数组

if(array.indexOf(arr[i])===-1){//判断索引有没有等于

array.push(arr[i])

}

}

return array

}

console.log(unlink(arr));

4、利用includes()方法去重。

示例代码:

var arr= [1, 1, 8, 8, 12, 12, 15, 15, 16, 16];

function unique(arr){

if(!Array.isArray(arr)){

console.log('type error!')

return

}

var array=[];

for(var i= 0; i< arr.length; i++){

if(!array.includes( arr[i])){//includes检测数组是否有某个值

array.push(arr[i]);

}

}

return array

}

console.log(unique(arr))

5、利用filter()方法去重。

示例代码:

var arr= [1, 1, 8, 8, 12, 12, 15, 15, 16, 16];

function unlink(arr){

return arr.filter(function(item, index, arr){

//当前元素,在原始数组中的一个索引==当前索引值,否则返回当前元素

return arr.indexOf(item, 0)=== index;

});

}

console.log(unlink(arr));

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

皮皮鬼说这片碎片藏在扫帚?剑的碎片藏在何处iPhone16系列新增相机按钮AI功能 iphone16promax升级ios26ai键滑动失灵