数组去重方法一:排序后相邻去重法
1 array=[1,5,9,5,2,7,2,3,6,8,4,7,9,5] 2 function unique4(array){ 3 array.sort(); 4 var re=[array[0]]; 5 for(var i = 1; i < array.length; i++){ 6 if( array[i] !== re[re.length-1]) 7 { 8 re.push(array[i]); 9 } 10 } 11 return re; 12 } 13 let arr=unique4(array) 14 console.log(arr);
数组去重方法二:优化遍历数组法 实现思路:获取没重复的最右—值放入新数组。
1 array=[1,5,9,5,2,7,2,3,6,8,4,7,9,5] 2 function unique5(array){ 3 var r = []; 4 for(var i = 0, l = array.length; i < l; i++) { 5 for(var j = i + 1; j < l; j++) 6 if (array[i] === array[j]) j = ++i; 7 r.push(array[i]); 8 } 9 return r; 10 } 11 let arr=unique5(array) 12 console.log(arr);
数组去重方法三:数组下标判断法
1 array=[1,5,9,5,2,7,2,3,6,8,4,7,9,5] 2 function unique3(array){ 3 var n = [array[0]]; //结果数组 4 //从第二项开始遍历 5 for(var i = 1; i < array.length; i++) { 6 //如果当前数组的第i项在当前数组中第—次出现的位置不是i, 7 //那么表示第i项是重复的,忽略掉。否则存入结果数组 8 if (array.indexOf(array[i]) == i) n.push(array[i]); 9 } 10 return n; 11 } 12 let arr=unique3(array) 13 console.log(arr);
数组去重方法四:对象键值对法
1 array=[1,5,9,5,2,7,2,3,6,8,4,7,9,5] 2 function unique2(array){ 3 var n = {}, r = [], len = array.length, val, type; 4 for (var i = 0; i < array.length; i++) { 5 val = array[i]; 6 type = typeof val; 7 if (!n[val]) { 8 n[val] = [type]; 9 r.push(val); 10 } else if (n[val].indexOf(type) < 0) { 11 n[val].push(type); 12 r.push(val); 13 } 14 } 15 return r; 16 } 17 18 let arr=unique2(array) 19 console.log(arr);
原文:https://www.cnblogs.com/jack-wangsir/p/12564498.html