|
|
|
|
|
JavaScript如何從數(shù)組中刪除重復(fù)項(xiàng)?在任何編程語(yǔ)言的面試中被廣泛詢問(wèn)的問(wèn)題之一(我們將在這里討論 JavaScript)是在數(shù)組中查找唯一元素或從數(shù)組中刪除重復(fù)項(xiàng),為解決在 JavaScript 中刪除數(shù)組中的重復(fù)項(xiàng)的廣泛?jiǎn)栴},本文將介紹三種常用的方法。
使用 Sets
在本示例中,我們將聲明一個(gè)包含重復(fù)元素的數(shù)組,即 animals 和一個(gè)包含所有唯一元素的數(shù)組 unique 。
Set 對(duì)象存儲(chǔ)任何類型的唯一值,無(wú)論是原始值還是對(duì)象引用。
在這里,為了刪除重復(fù)項(xiàng),我們將 animals 數(shù)組轉(zhuǎn)換為 Set。new Set()
將隱式刪除重復(fù)元素。然后我們將此集合轉(zhuǎn)換回 unique 數(shù)組。
// 使用Set刪除數(shù)組重復(fù)項(xiàng)
let animals = ["Lion", "Rabbit", "Mouse", "Monkey", "Lion","Ape"]
let unique = [...new Set(animals)]
console.log(unique)
輸出
['Lion', 'Rabbit', 'Mouse', 'Monkey', 'Ape']
使用 Filter
我們先看示例,然后分析其中使用了什么方法和為什么使用。
// 使用filter方法刪除數(shù)組重復(fù)項(xiàng)
let animals = ["Lion", "Rabbit", "Mouse", "Monkey", "Lion","Ape"]
let usingFilter = () => {
return unique = animals.filter(function(item,index){
return animals.indexOf(item) == index;
});
}
console.log(usingFilter())
輸出
['Lion', 'Rabbit', 'Mouse', 'Monkey', 'Ape']
代碼解釋
indexOf()
此方法返回?cái)?shù)組中元素第一次出現(xiàn)的索引。我們使用重復(fù)項(xiàng)的邏輯是索引與其indexOf()
值不同的項(xiàng),從這里我們返回當(dāng)前索引和indexOf()
值相等的元素。
filter()
要?jiǎng)h除重復(fù)項(xiàng),我們使用filter()
方法僅包含當(dāng)前索引與其indexOf()
值匹配的元素。我們將這些值存儲(chǔ)在一個(gè)名為unique的數(shù)組中,并通過(guò)調(diào)用 filter()
函數(shù)返回它們。
為了更好地理解,在我們的例子中,程序執(zhí)行邏輯是這樣的:
當(dāng)前索引 -> indexOf(),
過(guò)濾這些獨(dú)特的元素并將它們存儲(chǔ)在一個(gè) 獨(dú)特的數(shù)組中并返回它們。
如果我們需要使用此方法在數(shù)組中查找重復(fù)項(xiàng),我們只需將相等 (==) 條件改為 (!=) 即可。
使用 forEach
同樣,我們先看示例,然后再了解這里使用的術(shù)語(yǔ)。
// Remove duplicates in array using forEach loop method
let animals = ["Lion", "Rabbit", "Mouse", "Monkey", "Lion","Ape"]
let unique = [];
animals.forEach((item) => {
if(!unique.includes(item)){
unique.push(item);
}
});
console.log(unique);
輸出
['Lion', 'Rabbit', 'Mouse', 'Monkey', 'Ape']
代碼解釋
forEach
用于迭代 animal 數(shù)組的每個(gè)元素 。
includes()
如果元素在數(shù)組中,則返回 true,否則返回 false。
push()
它將新項(xiàng)目添加到數(shù)組的末尾。
該方法背后的邏輯是我們聲明了一個(gè)空 unique 數(shù)組,然后我們迭代 animal 數(shù)組的每個(gè)元素, 檢查 unique 數(shù)組是否包含(或具有)該元素,如果沒(méi)有,條件就變?yōu)?strong>true,那么我們將該元素推送到 unique 的數(shù)組中。所以,通過(guò)這個(gè)過(guò)程,我們得到了 unique 數(shù)組中的所有唯一元素并打印出來(lái)。
總結(jié)
在本文中,我們學(xué)習(xí)了三種重要的、簡(jiǎn)短且易于掌握的方法來(lái)從數(shù)組中刪除重復(fù)項(xiàng)或從數(shù)組中查找重復(fù)項(xiàng)或唯一元素。還有許多其他方法可以做同樣的事情,但這些方法很容易記住。
參考文章
相關(guān)文章