JS数组去重的几种方法

1、indexOf()   

var arr = [1,2,3,1,2,3,4,4,5,6,5]
var arr1 = [ ]
for(var i = 0,len = arr.length; i< len; i++){
  if(arr1.indexOf(arr[i]) == -1){
   arr1.push(arr[i])
  }
}

*** 利用一个空数组arr1,当arr1中不存在该元素时push()

 

2、include()

var arr = [1,2,3,1,2,3,4,4,5,6,5]
var arr1 = []
for(var i = 0,len = arr.length; i< len; i++){
  if(arr1.includes(arr[i])!=0){
   arr1.push(arr[i])
  }
}

*** 同样利用一个空数组arr1,判断arr1中不存在该元素时push()

 

3、排序后去重  splice()

var arr = [1,2,3,1,2,3,4,4,5,6,5]
var count = 0;
arr.sort(function(a,b){return a-b})
for(var i = 0; i<arr.length-1; i++){
  if(arr[i]==arr[i+1]){
   count++
  }
  arr.splice(i-count+1,count)
  i=i-count+1
  count=0;
}

*** 在元素组上去重,先sort()方法排序,count记录相同元素个数,再利用splice()在元素组上删除相同的元素

 

3.1、排序后去重  push()

 

var arr = [1,2,3,1,2,3,4,4,5,6,5]

arr.sort(function(a,b){return a-b})

var arr1=[arr[0]]

for(var i = 1; i<arr.length; i++){
  if(arr[i]!=arr[i-1]){
   arr1.push(arr[i])
  }
}

*** 利用新数组,为防止不能比较到最后一个元素就结束程序,所以这里采用push后一个元素的方法

 

4.双重循环去重 
for (var i = 0; i < arr.length; i++) {
 for (var j = 0; j < i; j++) {
  if (arr[j] == arr[i]) {
   arr.splice(i,1);
   i--;
   break;
  }
 }
}

 

5. 原生js去重

var arr = [1,1,2,2,3,4,4]

var newArr = [1]

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

  for(var j = 0; j< newArr.length; j++){

    if(arr[i]==newArr[j])  break;

    if(j == newArr.length-1)  newArr.push(arr[i]);

}

posted @ 2020-08-08 11:05  活到老学到老的李小小  阅读(282)  评论(0)    收藏  举报