javascript 數組去重常用方法彙總

mark一些我常用的數組去重的方法

1、set方法

const arr = [1,2,3,1,1,2,3,4,2,1,2,3,4,4,2,2,1,2,3,4]

function reset (arr) {
	return Array.from(new Set(arr))
}

let Arr = reset(arr)
console.log(Arr) //  [1, 2, 3, 4]

Set類似於數組,區別在於它所有的成員都是唯一的,不能有重複的值

2、for循環遍歷

const arr = [1,2,3,1,1,2,3,4,2,1,2,3,4,4,2,2,1,2,3,4]

for(let i = 0;i<arr.length;i++) {
	for(let j = i+1;j<arr.length;j++) {
		if (arr[i] === arr[j]) {
			arr.splice(j, 1)
			j--
		}
	}
}

兩層for循環 比較arr[i]到 arr[i+1~arr.length] 相同即splice(i+1, 1)去重

3、利用IndexOf去重

const arr = [1,2,3,1,1,2,3,4,2,1,2,3,4,4,2,2,1,2,3,4]
let Arr = []
for(let i = 0; i<arr.length;i++){
	if (Arr.indexOf(arr[i]) === -1) {
		Arr.push(arr[i])
	}
}

indexOf()方法如果找不到就會返回-1

4、sort()排序去重

let arr = [1,2,3,1,1,2,3,4,2,1,2,3,4,4,2,2,1,2,3,4]
arr = arr.sort()
let Arr = []
for(let i = 0; i<arr.length; i++) {
	if (arr[i] !== arr[i+1]) {
		Arr.push(arr[i])
	}
}

先使用sort方法排序好數組。然後比較數組的前後兩項是否相同

5、利用includes方法

const arr = [1,2,3,1,1,2,3,4,2,1,2,3,4,4,2,2,1,2,3,4]
let Arr = []
for(let i = 0; i<arr.length;i++){
	if (!Arr.includes(arr[i])) {
		Arr.push(arr[i])
	}
}

同indexOf方法。includes方法用戶檢測數組是否存在傳入的值,存在返回true

6、利用filter方法

const arr = [1,2,3,1,1,2,3,4,2,1,2,3,4,4,2,2,1,2,3,4]
let Arr = arr.filter((item, i, self) => self.indexOf(item, 0) === i)

filter是es6的過濾數組的方法,使用filter結合indexOf方法能比較有效的去重

還有其他很多種數組去重方式就不一一列舉了,總之靈活善用方法總會有最優去重法;
一些方法參考了這位大佬的總結,更多請看這位大佬的文章 ==>地址

…end

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章