es6筆記(5)Map數據結構
阿新 • • 發佈:2018-02-07
創建 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數據結構