数组去重,数组去重最简单的方法
其实数组去重的问题并不复杂,但是又很多的朋友都不太了解数组去重最简单的方法,因此呢,今天小编就来为大家分享数组去重的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
数组去重的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));
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!