ES6 Map結構詳細說明

2021-10-24 08:55:14 字數 4238 閱讀 1886

es6 提供了 map 資料結構。它類似於物件,也是鍵值對的集合,但是「鍵」的範圍不限於字串,各種型別的值(包括物件)都可以當作鍵。也就是說,object 結構提供了「字串—值」的對應,map 結構提供了「值—值」的對應,是一種更完善的 hash 結構實現。

基本用法

const m =

newmap()

;const o =

; m.

set(o,

'content');

console.

log(m)

;//map => 'content' }

console.

log(o);//

console.

log(m.

has(o));

//true

m.delete

(o);

//接收乙個陣列作為引數

const map =

newmap([

["name"

,"張三"],

["title"

,"author"]]

);console.

log(map.

has(

"name"))

;//true

console.

log(map.

get(

"name"))

;//張三

任何具有 iterator 介面、且每個成員都是乙個雙元素的陣列的資料結構都可以當作map建構函式的引數。setmap都可以用來生成新的 map。

//使用set來當做引數

const

set=

newset([

['foo',1

]]);

const map =

newmap

(set);

console.

log(map.

get(

'foo'))

;//1

//使用map來當做引數

const m1 =

newmap([

['baz',2

]]);

const m2 =

newmap

(m1)

;console.

log(m2.

get(

'baz'))

;//2

如果對同乙個鍵多次賦值,後面的將覆蓋前面

如果讀取乙個未知的鍵,則返回undefined

只有對同乙個物件的引用map結構才將其視為同乙個鍵

const map =

newmap()

; map.

set(

['a'],

555)

; console.

log(map.

get(

['a'])

);//undefined

const k1 =

['a'];

const k2 =

['a'];

map.

set(k1,

111)

.set

(k2,

222)

; console.

log(map.

get(k1));

//111

console.

log(map.

get(k2));

//222

map的屬性

.size( )長度

.set( ) 插入

.get( )讀取對應鍵值

.has( )判斷是否有該鍵值

.delete( )刪除某個鍵

.clear( ) 清除所有成員

遍歷方法

.keys( ) 返回鍵名

.values( ) 返回鍵值

.entries( ) 返回所有成員

.foreach( ) 遍歷map所有成員

const map =

newmap([

["f"

,"no"],

["t"

,"yes"]]

);//遍歷鍵名

for(

let key of map.

keys()

);// f

// t

//遍歷鍵值

for(

let values of map.

values()

);// no

// yes

//返回所有成員

for(

let item of map.

entries()

);for(

let[key, value]

of map.

entries()

);// f no

// t yes

//等同於map.entries()

for(

let[key, value]

of map)

;// f no

// t yes

//foreach()遍歷

map.

foreach

((value,key,map)

=>

)// no 1 map

// yes 2 map

// c 3 map

//foreach()接受第二個引數用來繫結this

const map =

newmap([

[1,"no"],

[2,"yes"],

[3,"c"],

]);const reporter =};

map.

foreach

(function

(value,key,map)

,reporter)

;// key: 1, value: no

// key: 2, value: yes

// key: 3, value: c

結合陣列的map方法與filter方法可以實現map的遍歷與篩選
const map =

newmap([

[1,"no"],

[2,"yes"],

[3,"c"],

]);const map0 =

newmap([

...map]

.filter((

[k,v]

)=> k <3)

);console.

log(map0)

;//map

資料轉換

map轉陣列

console.

log(

[...map]);

//[ [ 'f', 'no' ], [ 't', 'yes' ] ]

陣列轉map

let arr =[[

"name"

,"xiaoming"],

["age",17

]];let map =

newmap

(arr)

; console.

log(map)

;//map

map轉物件

如果所有 map 的鍵都是字串,它可以無損地轉為物件。如果有非字串的鍵名,那麼這個鍵名會被轉成字串,再作為物件的鍵名。

function

toobj

(strmap)

;return obj;};

const map =

newmap([

[1,"no"],

[2,"yes"],

[3,"c"],

]); console.

log(

toobj

(map));

//

物件轉map(通過object.entries())

let obj =

;let map =

newmap

(object.

entries

(obj));

console.

log(map)

;//

ES6 Map集合使用

ecmascript6中的map集合 map型別是一種儲存著許多鍵值對的有序列表,其中鍵名和鍵值支援所有的資料型別 鍵名的判斷是通過呼叫 object.is 方法實現的,所以 5 和 5 被判斷為兩個型別 let map new map map.set name song document.writ...

es6 map常用方法

es6 map常用方法總結 1.map 結構轉為陣列結構 比較快速的方法是結合使用擴充套件運算子 let map new map 1,one 2,two 3,three map.keys 1,2,3 map.values one two three map.entries 1,one 2,two 3...

es6 map 遍歷 筆記

let arr1 1 2,3 let arr2 arr1.map value,key,arr console.log arr1 1,2,3 console.log arr2 1,4,9 map 方法 map,對映,即原陣列對映成乙個新的陣列 map方法接受乙個新引數,這個引數就是將原陣列變成新陣列的...