目錄
总结
首頁 web前端 js教程 了解ES6中數組去重的兩種方式

了解ES6中數組去重的兩種方式

Dec 16, 2020 am 09:20 AM
es6 javascript 數組去重

這篇文章跟大家介紹一下ES6中陣列去重的兩種方式。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

了解ES6中數組去重的兩種方式

相關推薦:《javascript影片教學

ES6中陣列去重的兩種方式

方法一:

function unique(arr) {
    const res = new Map();
    return arr.filter((a) => !res.has(a) && res.set(a, 1))
}
登入後複製

就這麼短,就可以了,我們來解釋為什麼。

Map物件

Map是ES6 提供的新的資料結構。
Map 物件保存鍵值對。任何值(物件或原始值) 都可以作為一個鍵或一個值。

下表列出了 Map 物件的方法。

方法 描述
#clear #刪除所有的鍵/值對,沒有回傳值。
delete 刪除某個鍵,回傳true。如果刪除失敗,則回傳false。
forEach 對每個元素執行指定操作。
get 傳回Map物件key相對應的value值。
has 傳回布林值,表示某個鍵是否在目前 Map 物件之中。
set 給Map物件設定key/value 鍵/值對。

Map物件還有一個size屬性,他傳回Map物件的鍵/值對的數量。

陣列的filter() 方法

filter() 方法建立一個新的數組,新數組中的元素是透過檢查指定數組中符合條件的所有元素。

語法:

array.filter(function(currentValue,index,arr), thisValue)
登入後複製

參數說明:  

了解ES6中數組去重的兩種方式

箭頭函數

return arr.filter((a) => !res.has(a) && res.set(a, 1))
//上面的代码可以改成这样
return arr.filter(function(a){
    return !res.has(a) && res.set(a, 1);
});
登入後複製
1、箭頭函數寫入程式碼擁有更簡潔的語法;
2、不會綁定this。

了解更多,點這裡

方法一分析

function unique(arr) {
    //定义常量 res,值为一个Map对象实例
    const res = new Map();
    
    //返回arr数组过滤后的结果,结果为一个数组
    //过滤条件是,如果res中没有某个键,就设置这个键的值为1
    return arr.filter((a) => !res.has(a) && res.set(a, 1))
}
登入後複製

方法二:

#
function unique(arr) {
    return Array.from(new Set(arr))
}
登入後複製

這個方法的程式碼量更少,簡直不可思議。
陣列的from方法

Array.from() 方法從一個類似陣列或可迭代的物件(包括Array,Map,Set,String,TypedArray,arguments 物件等等) 中建立一個新的陣列實例

語法:

Array.from(arrayLike[, mapFn[, thisArg]])
登入後複製
##參數描述arrayLike#必需,想要轉換成真實陣列的類別陣列物件或可迭代的物件。 mapFn可選,如果指定了該參數,則最後產生的陣列會經過該函數的加工處理後再傳回。 thisArg可選,執行 mapFn 函數時 this 的值。

範例程式碼:

const bar = ["a", "b", "c"];
Array.from(bar);
// ["a", "b", "c"]

Array.from('foo');
// ["f", "o", "o"]
登入後複製

Set物件

Set 物件允許你儲存任何類型的唯一值,無論是原始值或是物件參考。
Set物件是值的集合,你可以按照插入的順序迭代它的元素。
Set中的元素只會出現一次,即 Set 中的元素是唯一的。

語法:

new Set([iterable]);
登入後複製

參數:   iterable,如果傳遞一個可迭代物件(包括Array,Map,Set,String, TypedArray,arguments 物件等等),它的所有元素將會被加入到新的Set中。如果不指定此參數或其值為null,則新的 Set為空。

下表列出了 Set 物件的方法。

方法描述add新增某個值,傳回Set物件本身。 clear刪除所有的鍵/值對,沒有回傳值。 delete刪除某個鍵,回傳true。如果刪除失敗,則回傳false。 forEach對每個元素執行指定操作。 has傳回布林值,表示某個鍵是否在目前 Set 物件之中。

Set对象和Map对象一样,都有一个size属性,他返回Set对象的值的个数。

方法二 分析

function unique(arr) {
    //通过Set对象,对数组去重,结果又返回一个Set对象
    //通过from方法,将Set对象转为数组
    return Array.from(new Set(arr))
}
登入後複製

总结

这次说的两个方法,真的很简单,主要就是靠ES6里的新东西,难度不大,代码简单,主要就是多用用就好了。


经人提醒,再补充一种,[...new Set(arr)]  

了解ES6中數組去重的兩種方式

不懂 ...  的朋友,可以看这里 js扩展运算符

更多编程相关知识,请访问:编程学习!!

以上是了解ES6中數組去重的兩種方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1276
29
C# 教程
1256
24
如何使用WebSocket和JavaScript實現線上語音辨識系統 如何使用WebSocket和JavaScript實現線上語音辨識系統 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術 WebSocket與JavaScript:實現即時監控系統的關鍵技術 Dec 17, 2023 pm 05:30 PM

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統 如何利用JavaScript和WebSocket實現即時線上點餐系統 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統 如何使用WebSocket和JavaScript實現線上預約系統 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

PHP 陣列去重時指定移除重複元素的依據 PHP 陣列去重時指定移除重複元素的依據 Apr 28, 2024 pm 10:48 PM

PHP的array_unique()函數用來移除陣列中重複元素,其預設使用嚴格相等(===)。我們可以透過自定比較函數來指定去重依據:建立自定比較函數,指定去重的標準(例如根據元素長度);將自訂比較函數作為第三個參數傳遞給array_unique()函數,即可根據指定的標準移除重複元素。

JavaScript與WebSocket:打造高效率的即時天氣預報系統 JavaScript與WebSocket:打造高效率的即時天氣預報系統 Dec 17, 2023 pm 05:13 PM

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

javascript如何使用insertBefore javascript如何使用insertBefore Nov 24, 2023 am 11:56 AM

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

See all articles