数组去重的方法们

今天就来总结下,处理数组去重的时候想到的一些方法,后面要是还能想到啥或者看到啥新的,会再次添加:

1.indexOf的方法

var arr=[1,1,7,2,7,4,8,4]
var newArr=[];
for(var i=0;i<arr.length;i++){
if(newArr.indexOf(arr[i])==-1){
newArr.push(arr[i]);
}
}
console.log(newArr)

这种方法就是利用indexOf查找新数组中是否有相应的arr[i],若没有的话就会返回-1,则在newArr中push.arr[i]

2.依旧利用indexOf判断其与数组下标的关系,来选择是否向新数组中push:

var arr=[1,1,7,2,7,4,8,4]
var newArr=[];
for(var i=0;i<arr.length;i++){
if(arr.indexOf(arr[i])==i){
newArr.push(arr[i]);
}
}
console.log(newArr)

3.使用sort方法来处理:

var arr=[1,1,7,2,7,4,8,4]
arr.sort()
var newarr=[arr[0]];
for(var i=0;i<arr.length;i++){
if(arr[i]!=newarr[newarr.length-1]){
newarr.push(arr[i]);
}
}
console.log(newarr)

4.双层循环+splice:

var arr=[1,1,7,2,7,4,8,4]
function theme(arr){for(var i=0,len=arr.length;i<len;i++){
for(var j=i+1,length=arr.length;j<length;j++){
if(arr[i]==arr[j]){
arr.splice(j,1)
j--;//删除一个数,j就减1
length--;//j值减小时,lenth的值也减1
}
}
}
return arr}
console.log(theme(arr))

5.set方式:

var arr=[1,1,7,2,7];
function theme(arr){
var x=new Set(arr);
return[...x];
};
console.log(theme(arr))

set真的是yyds..简单几句解决..ES6提供了一种新的数据结构Set,它类似于数组,但是成员的值都是唯一的,没有重复的值,且set本身就是一个构造函数,用来生成Set数据结构.

6.filter方式:

var arr=[1,1,7,2,7];
var newarr=arr.filter(function(element,index,self){
return self.indexOf(element) === index;
});
console.log(newarr);

解释下,这三个参数,第一个是表示arr中的某元素,第二个参数表示元素在数组中的位置,第三个表示数组本身.

7.includes方法:

var arr=[1,1,7,2,7];
function theme(arr){
var newarr=[];
for(var i=0;i<arr.length;i++){
if(!newarr.includes(arr[i])){
newarr.push(arr[i])
}
}
return newarr
}
console.log(theme(arr))

includes()方法的作用是,来判断一个数组是否包含一个特定的值.如果是的话,返回true,否则false

原文地址:https://www.cnblogs.com/ljylearnsmore/p/14532855.html