js中最簡單最實用的陣列去重方法!
阿新 • • 發佈:2018-12-14
js陣列去重是比較常見的陣列操作方式之一,網上有很多關於陣列去重的部落格文章,方法各式各樣,但有些方法實用性很差,很容易造成不必要的麻煩,所以我們需要去其糟粕取其精華,下面我們就整理一些比較實用的陣列去重方法。
一、for迴圈巢狀,利用splice去重
此方法是比較常用的方法之一,也是es5中比較實用的方法之一。話不多說,上程式碼:
function newArr(arr){ for(var i=0;i<arr.length;i++){ for(var j=i+1;j<arr.length;j++) if(arr[i]==arr[j]){ //如果第一個等於第二個,splice方法刪除第二個 arr.splice(j,1); j--; } } } return arr; } var arr = [1,1,2,5,6,3,5,5,6,8,9,8]; console.log(newArr(arr))
二、建新陣列,利用indexOf去重
此方法也是es5中比較簡單的方法之一,基本思路是新建一個數組,原陣列遍歷傳入新陣列,判斷值是否存在,值不存在就加入該新陣列中;值得一提的是,方法“indexOf”是es5的方法,IE8以下不支援。話不多說,上程式碼:
function newArr(array){ //一個新的陣列 var arrs = []; //遍歷當前陣列 for(var i = 0; i < array.length; i++){ //如果臨時數組裡沒有當前陣列的當前值,則把當前值push到新數組裡面 if (arrs.indexOf(array[i]) == -1){ arrs.push(array[i]) }; } return arrs; } var arr = [1,1,2,5,5,6,8,9,8]; console.log(newArr(arr))
三、ES6中利用Set去重
此方法是所有去重方法中程式碼最少的方法,程式碼如下:
function newArr(arr){
return Array.from(new Set(arr))
}
var arr = [1,1,2,9,6,9,6,3,1,4,5];
console.log(newArr(arr))