js---去重方法(二)

1. 利用hasOwnProperty  判断是否存在对象属性

function unique(array){
	var obj = {};
	return array.filter(function(item,index,array){
		return obj.hasOwnProperty(typeof item+item) ? false : (obj[typeof item+item]=true)
	})
}
var array = [1,2,1,20];
console.log(unique(array))  // 1 2 20

2 利用filter 

function unique(array){
	return array.filter(function(item,index,array){
		//当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
		return array.indexOf(item,0) === index
	})
}
var array = [1,2,3,1,2,3,4]
console.log(unique(array)) // 1 2 3 4

3 利用递归去重

 function unique(arr){
	 var array = arr;
	 var len = array.length;
	 array.sort(function(a,b){
	 	return a- b;
	 })
	 function loop(index){
		 if(index >= 1){
			 if(array[index] === array[index-1]){
				 array.splice(index,1);
			 }
			 loop(index-1);//递归loop,然后数组去重
		 }
	 }
	 loop(len-1);
	 return array;
 }
 var array = [1,2,4,1,2,4];
 console.log(unique(array)) // 1 2 4

4. 利用Map数据结构去重 

 function unique(arr){
	  let map = new Map();
	  let array = new Array();//数组用于返回结果
	  for(let i = 0;i<arr.length;i++){
		  if(map.has(arr[i])){
			  //如果有该key值
			  map.set(arr[i],true);
		  }else{
			  map.set(arr[i],false);//如果没有该值
			  array.push(arr[i])
		  }
	  }
	  return array;
  }
  var arr = [1,4,7,1,4,7];
  console.log(unique(arr)) // 1 4 7

  

原文地址:https://www.cnblogs.com/ccyq/p/11335272.html