陣列去重的幾種方法

粒加粒發表於2020-10-10

陣列去重

1.利用indexOf遍歷陣列去重

function unique(arr){
	const res = []
	arr.forEach(item => {
		if (res.indexOf(item) < 0){
			res.push(item)
			}
			})
			return arr
			}

新建一個空的結果陣列,迴圈原陣列,判斷結果陣列是否存在當前元素,如果有相同的值則跳過,不相同則push進陣列。

2.Set

function unique(arr){
	const set = new Set(arr)
	return [...set]

set是ES6中引入的新的資料型別。set只允許儲存不重複的值,所以當你放入一個陣列,它會自動去掉重複的值。

3.利用for巢狀for,然後splice去重

function unique(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;
}

雙層迴圈,外層迴圈元素,內層迴圈時比較值。值相同時,則刪去這個值。

4.利用sort()

function unique(arr) {
    arr = arr.sort()
    var arrry= [arr[0]];
    for (var i = 1; i < arr.length; i++) {
        if (arr[i] !== arr[i-1]) {
            arrry.push(arr[i]);
        }
    }
    return arrry;
}

利用sort()排序方法,然後根據排序後的結果進行遍歷及相鄰元素比對。

相關文章