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
建構函式的引數。set
和map
都可以用來生成新的 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方法接受乙個新引數,這個引數就是將原陣列變成新陣列的...