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