更新時間:2023年09月18日10時53分 來源:傳智教育 瀏覽次數(shù):
在JavaScript中,有多種方法可以實現(xiàn)數(shù)組去重。以下是一些常用的方法,每種方法都附帶了詳細說明和示例代碼:
Set是ES6引入的數(shù)據(jù)結(jié)構(gòu),它只包含不重復(fù)的值??梢詫?shù)組轉(zhuǎn)換成Set,然后將其再次轉(zhuǎn)換回數(shù)組,以去除重復(fù)項。
const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = Array.from(new Set(arr)); console.log(uniqueArr); // [1, 2, 3, 4, 5]
使用Array的filter()方法,創(chuàng)建一個新數(shù)組,只保留第一次出現(xiàn)的每個元素。
const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = arr.filter((item, index, self) => self.indexOf(item) === index); console.log(uniqueArr); // [1, 2, 3, 4, 5]
使用Array的reduce()方法,構(gòu)建一個新數(shù)組,只添加第一次出現(xiàn)的元素。
const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = arr.reduce((acc, current) => { if (!acc.includes(current)) { acc.push(current); } return acc; }, []); console.log(uniqueArr); // [1, 2, 3, 4, 5]
使用for循環(huán)遍歷數(shù)組,將不重復(fù)的元素添加到新數(shù)組中。
const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = []; for (let i = 0; i < arr.length; i++) { if (uniqueArr.indexOf(arr[i]) === -1) { uniqueArr.push(arr[i]); } } console.log(uniqueArr); // [1, 2, 3, 4, 5]
使用Map數(shù)據(jù)結(jié)構(gòu),遍歷數(shù)組并將元素作為鍵添加到Map中,然后將Map的鍵轉(zhuǎn)換回數(shù)組。
const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueArr = [...new Map(arr.map(item => [item, item])).values()]; console.log(uniqueArr); // [1, 2, 3, 4, 5]
這些都是常見的數(shù)組去重方法,我們可以根據(jù)實際的需求選擇其中一個來使用。使用Set通常是最簡單和最高效的方法,但它不會保留原始數(shù)組的順序。如果需要保留順序,可以使用其他方法。