//1. var map = new Map(); map.set('one', 1); map.set('two', 2); map.set('three', 3); //... //2. var map = new Map([['one',1], ['two', 2], ['three', 3]]);
鍵的比較規則:NaN 是與NaN是相同的(雖然NaN !== NaN),除此以外全部的值都根據'==='判斷。數組
var map = new Map(); map.set(Number('aa111'), 'isNaN'); map.set(Number('bb222'), 'also is NaN'); map.get(NaN); //'also is NaN'
一個對象一般都有本身的原型,因此一個對象總有一個"prototype"鍵。不過,從ES5開始可使用map = Object.create(null)來建立一個沒有原型的對象。函數
一個對象的鍵只能是字符串或者Symbols,但一個Map的鍵能夠是任意值。this
你能夠經過size屬性很容易地獲得一個Map的鍵值對個數,而對象的鍵值對個數只能手動確認。.net
Map.length 屬性length的值爲0。prototype
Map.prototype 表示Map構造器的原型。容許添加屬性從而應用與全部的Map對象。code
Map.prototype.constructor 返回建立給map實例的構造函數,默認是Map函數。對象
Map.prototype.size 返回Map對象的鍵值對的數量。blog
var map = new Map([['one',1], ['two', 2], ['three', 3]]); console.log(map.constructor); //function Map() { [native code] } console.log(map.size); //3
//Iterator對象:可使用for..of進行迭代的對象 var map = new Map([[1, 'one'],[2, 'two'], [3, 'three']]);
1.Map.prototype.clear() 移除Map對象的全部鍵值對。繼承
console.log(map.size); //3 map.clear(); console.log(map.size); //0
2.Map.prototype.delete(key) 移除任何與鍵相關聯的值,而且返回該值,該值在以前會被Map.prototype.has(key)返回爲true。以後再調用則返回false。three
console.log(map.has(1)); //true map.delete(1); console.log(map.has(1)); //false
3.Map.prototype.entries() 返回一個新的Iterator對象,它按插入順序包含了Map對象中每一個元素的[key, value]數組。
console.log(map); //Map {1 => "one", 2 => "two", 3 => "three"} map.entries(); console.log(map); //Map {1 => "one", 2 => "two", 3 => "three"}
4.Map.prototype.forEach(callbackFn[, thisArg]) 按插入順序,爲Map對象裏的每一鍵值對調用一次callbackFn函數。若是爲forEach提供了thisArg,他將在每次回調函數中做爲this值。
map.forEach(function(value, key, mapObj) { console.log(value + '---' + key + '---' + mapObj); //value - Map對象裏每個鍵值對的值 //key - Map對象裏每個鍵值對的鍵 //mapObj - Map對象自己 console.log(this); //this === window }); map.forEach(function(value, key, mapObj) { console.log(value + '---' + key + '---' + mapObj); console.log(this); //this === map }, map)
5.Map.prototype.get(key) 返回鍵對應的值,若是不存在,則返回undefined。
map.get(1); //'one'
6.Map.prototype.has(key) 返回一個布爾值,表示Map實例是否包含鍵對應的值。
map.has(1); // true map.has(5); //false
7.Map.prototype.keys() 返回一個新的Iterator對象,它按插入順序包含了Map對象中每一個元素的鍵。
map.keys(); //MapIterator {1, 2, 3}
8.Map.prototype.set(key, value) 設置Map對象中鍵的值,返回該Map對象。
console.log(map.has(4)); //false map.set(4, 'four'); console.log(map.has(4)) //true
9.Map.prototype.values() 返回一個新的Iterator對象,它按插入順序包含了Map對象中每一個元素的值。
map.values(); //
var map = new Map(); map.set(1, 'one'); map.set(2, 'two'); for (var [key, value] of map) { console.log(key + '---' + value); } // 1 --- one 2 --- two for (var key of map.keys()) { console.log(key); } // 1 2 for (var value of map.values()) { console.log(value); } // 'one' 'two'