淺談js中的Map與Set結構


在es6中引入了新的數據類型Map與Set結構 以下是Map與Set的一些簡單使用

官方解釋:它類似於對象,也是鍵值對的集合,但是“鍵”的范圍不限於字符串,各種類型的值(包括對象)都可以當作鍵。也就是說,Object結構提供了“字符串—值”的對應,Map結構提供了“值—值”的對應,是一種更完善的Hash結構實現。如果你需要“鍵值對”的數據結構,Map比Object更合適。

Map:

 var a=new Map() //新建一個Map對象
 console.log(a) //Map(0) {} 
 a.set('name','xiaoming') // 添加值 變成了Map(1) {"name" => "xiaoming"} 
 a.set('age',19) // 添加值  變成Map(2) {"name" => "xiaoming", "age" => 19}
a.get('name') //xiaoming 獲取值

 總結:Map是以鍵值對的結構的對象,具有極快的查找速度(優點)。 一個Kay永遠只對應一個Value

Set:

Set也是一個構造函數,其數據結構類似於數組,但其不同之處在於永遠沒有重復的值 。

我們知道在js的這個===判斷之下 NaN是不等於NaN的 即

NaN==NaN
false
NaN===NaN
false

那么在其Set結構中 其值是相等的。簡單的用法:

let a= new Set() //Set(0) {}
a.add(1);//Set(1) {1}
a.add(1);//Set(1){1} 並沒有重復添加 a.delete(1) ; //返回true 說明刪除成功 console.log(a) //Set(0){}

這個Set對象用於一些去重是極為方便的比如一個簡單的數組去重:

var a=[1,2,3,4,5,5,4,3,2,1,NaN,null,undefined,null,NaN];
var b=new Set(a);
console.log(b) //Set(8) {1, 2, 3, 4, 5,NaN,null,undefined}
//將其轉換為數組即可 用es6的擴展運算符也可以的
var c=[...b] //(8) [1, 2, 3, 4, 5, NaN, null, undefined]
//或者使用Array.form
var f=Array.from(b) //(8) [1, 2, 3, 4, 5, NaN, null, undefined]

總結:

Set只有值而沒有鍵 可以用add添加數據進去,但是重復添加的數據不會出現 可以用delete來進行刪除數據 ;下面是詳細用法

add(value):添加某個值,返回Set結構本身。 
delete(value):刪除某個值,返回一個布爾值,表示刪除是否成功。 
has(value):返回一個布爾值,表示該值是否為Set的成員。 
clear():清除所有成員,沒有返回值。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM