首页 > 技术文章 > 数组去重的方法

karila 2018-04-05 00:01 原文

数组去重的两种方法:通过下标去重,通过对象属性的方法去重

//下标的方法
    	function getArray(arr){
           var newArray=[];
           arr.forEach(function(item,index,arr){
           	if(newArray.indexOf(item)==-1){
                 newArray.push(item)
           	}
           })
           return newArray;
    	}

    	//对象属性的方法
    	function getArray2(arr){
           var newObject={};
           var newArray=[];
           arr.forEach(function(item,index,arr){
              if(!newObject[item]){
              	 newArray.push(item);
                 newObject[item]=1;
              }else{
              	newObject[item]++;
              }
           })
           return newArray
           }
    	}

  还有去重的方式可以是:

      遍历去重:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中

      先排序后去重:先将原数组排序,在与相邻的进行比较,如果不同则存入新数组

      ES6的set方法

//遍历去重
function unique(arr){
  var res = [arr[0]];
  for(var i=1;i<arr.length;i++){
    var repeat = false;
    for(var j=0;j<res.length;j++){
      if(arr[i] == res[j]){
        repeat = true;
        break;
      }
    }

    if(!repeat){
      res.push(arr[i]);
    }
  }

  return res;
}

 //先排序,后去重
function unique(arr){
  var arr2 = arr.sort();
  var res = [arr2[0]];
  for(var i=1;i<arr2.length;i++){
    if(arr2[i] !== res[res.length-1]){
      res.push(arr2[i]);
    }
  }
  return res;
}

//ES6中的set 用拓展运算符
let unique=[...new Set(array)];

//Es6中的set方法 用Array.from转换成数组
function dedupe(array){
return Array.from(new Set(array));
}

  

      

推荐阅读