JavaScript数组去重

方法一(推荐)


1.创建一个空对象

2.创建一个新的数组存放结果

3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。

说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。

function unique(arr){
	var obj = {};
	var new_arr = [];
	for(var i =0;i<arr.length;i++){
		if(!obj[arr[i]]){
			new_arr.push(arr[i]);
			obj[arr[i]] = 1;
		}
	}
	return new_arr;
}
var arr1 = [1,1,33,4,6,9,12,12,14];
var arr = unique(arr1);
alert(arr);   //1,33,4,6,9,14

 

方法二:最常规


1.构建一个新的数组存放结果

2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比

3.若结果数组中没有该元素,则存到结果数组中

function unique(arr){
	for(var i =0;i<arr.length-1;i++){
		for(var j=i+1;j<arr.length;j++){
			if(arr[i]== arr[j]){
				arr.splice(j,1);
				j--;
			}
		}
	}
	return arr;
}

var arr1 = [1,1,33,4,6,9,12,12,14];
var arr = unique(arr1);
alert(arr);

 

方法三


1.先将原数组进行排序

2.检查原数组中的第i个元素 与 结果数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置

3.如果不相同,则将该元素存入结果数组中

 

posted @ 2017-11-25 10:15  飞奔吧小土豆  阅读(188)  评论(0编辑  收藏  举报