js中陣列去重
阿新 • • 發佈:2021-07-18
1.利用indexOf去重 IE8及以下版本不相容
function unique(arr){ var newArr = []; for(var i = 0;i < arr.length;i++){ //indexOf 返回值大於0,說明陣列有當期那值,返回-1說明沒有值 if(newArr.indexOf(arr[i]) == -1){ newArr.push(arr[i]); } } return newArr; }var arr = [1,2,3,4,2,3,1,2,3,4,2]; console.log(unique(arr));//[1,2,3,4]
2.利用物件去重 (物件的特性:屬性不重複)
//利用物件去重 function unique(arr){ var obj = {}; var newArr = []; for(var i = 0;i < arr.length;i++){ if(!obj[arr[i]]){ obj[arr[i]] = 'abc'; newArr.push(arr[i]); } }return newArr; } var arr = [1,6,6,7,3,4,3,2,3,5,5,4,3,1,4]; console.log(unique(arr));
3.sort()方法去重
// 利用sort()方法去重 function unique(arr){ var a = arr.sort(function(a,b){return a- b}) var newArr = [a[0]]; for(var i = 0;i <arr.length;i++){ if(newArr[newArr.length-1] !== arr[i]){ newArr.push(arr[i]); } }return newArr; }
4.利用雙重for迴圈去重
// 利用雙重for迴圈去重 function unique(arr) { var newArr = [arr[0]]; for (var i = 0; i < arr.length; i++) { var ret = false; for (var j = 0; j < newArr.length; j++) { if (arr[i] == newArr[j]) { ret = true; break; } } if (ret == false) { newArr.push(arr[i]); } } return newArr; } console.log(unique(arr));
5.利用函式遞迴去重
// 利用函式遞迴去重 function unique(arr){ var arr1 = arr; var len = arr1.length; arr1.sort((a,b)=>{return a- b}); function loop(index){ if (index >= 1) { if(arr1[index] === arr1[index-1]){ arr1.splice(index,1); } loop(index - 1);//遞迴loop,然後陣列去重 } } loop(len - 1); return arr1; } console.log(unique(arr));