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.如果不相同,则将该元素存入结果数组中