1. 程式人生 > >es6筆記(5)Map數據結構

es6筆記(5)Map數據結構

創建 trie pos obj 更新 foreach 布爾值 delete 包括

概要

字典是用來存儲不重復key的Hash結構。不同於集合(Set)的一點,字典使用的是[key,value]的形式來存儲數據。

JavaScript的對象(Object:{})只能用字符串當做key。使用起來有一定限制。
為了解決這個問題,ES6提供的Map數據結構。它類似與對象,也是[key,value]的集合,但是key的範圍不限於字符串,各種類型的值(包括對象)都可以當做key。


也就是說Object結構提供了 “字符串--值”的對應;
Map提供了“值--值”的對應,是一種完善的Hash結構的實現。
如果需要使用鍵值對的數據結構,Map比Object更合適。

//對於Object只能使用字符串作為key這一點,例如一下代碼。

var obj = {},
    key1={b:22},
    key2={c:33};

obj[key1] = 1;
obj[key2] = 2;

//此時key1,key2都會被轉成字符串“[object Object]”
console.log(obj);  //Object{[object Object] : 2} 

使用

1 創建一個Map

const map = new Map([
    ['a',1],['b',2]
]);

console.log(map); // {"a" => 1, "b" => 2}

2 Map 類的屬性

console.log(map.size); //字典長度

3 Map 類的方法

set(key,value)

設置一個鍵值對,然後返回整個Map結構。如果Key已經有值,則鍵值被更新,否則生成該鍵。
map裏面的key的排序順序是按照添加的順序排列的。

map.set('jd','www.jd.com')
   .set('baidu','www.baidu.com');

console.log(map);

get(key)

讀取key對應的鍵值,如果找不到key,返回undefined。

console.log(map.get('jd'));  //wwww.jd.com
console.log(map.get('x'));   //undefined

delete(key)

刪除某個鍵,成功返回true,失敗返回false。

console.log(map.delete('baidu')); // true
console.log(map.delete('baidu')); // false

has(key)

判斷某個key是否在map中存在,返回一個布爾值。

console.log(map.has('jd')) //true

clear()

清除所有數據,無返回值

map.clear();
console.log(map);  // Map(0) {}

keys()

返回鍵名的遍歷器

const map = new Map([
    ['jd','www.jd.com'],
    ['baidu','www.baidu.com']
]);
console.log(map.keys());   // MapIterator {"baidu","jd"}

values()

返回鍵值的遍歷器

console.log(map.values());   // MapIterator {"www.baidu.com","www.jd.com"}

entries

返回鍵值對的遍歷器

console.log(map.entries());   // MapIterator {['jd','www.jd.com'],['baidu','www.baidu.com']}

forEach()

使用回調函數遍歷每個成員

map.forEach(function(key,value,map){
    console.log(key + ':' + value); // baidu:www.baidu.com
})

es6筆記(5)Map數據結構