簡單使用數組
var myMap = new Map();
myMap.set(0, "zero");
myMap.set(1, "one");
for (var [key, value] of myMap) {
console.log(key +" "+ value);
}
// 0 zero
// 1 one
var b=new Map([['a',1],['b',2]])
b.forEach((item,index) => {console.log(item,index)})
//1 "a"
//2 "b"
複製代碼
var o={a:1};
var myMap=new Map([[{a:1},1],['b',2]]);
myMap.set({a:1},100);
myMap.set(o,"o");
console.log(myMap.get({a:1}))//undefined 這種取值方式,取不到值
console.log(myMap.get(o))// 'o' 正確的取值方式
console.log(myMap);//{{…} => 1, "b" => 2, {…} => 100, {…} => "o"}
//展開後
// [[{a:1},1],['b',2],[a:1,100],[{a:1},"o"]]
複製代碼
上方的myMap打印出來是函數
[[{a:1},1],['b',2],[a:1,100],[{a:1},"o"]]
複製代碼
var kvArray = [["key1", "value1"], ["key2", "value2"]];
// 使用常規的Map構造函數能夠將一個二維鍵值對數組轉換成一個Map對象
var myMap = new Map(kvArray);
myMap.get("key1"); // 返回值爲 "value1"
// 使用Array.from函數能夠將一個Map對象轉換成一個二維鍵值對數組
console.log(Array.from(myMap)); // 輸出和kvArray相同的數組
// 或者在鍵或者值的迭代器上使用Array.from,進而獲得只含有鍵或者值的數組
console.log(Array.from(myMap.keys())); // 輸出 ["key1", "key2"]
複製代碼
簡單使用 new Set([iterable]);ui
var mySet = new Set([1, 2, 3, 4, 5]);
console.log(mySet.has(1));
mySet.forEach(function(item,index,obj) {
console.log(item,index,obj);
});
// 1 1 Set(5) {1, 2, 3, 4, 5}
// 2 2 Set(5) {1, 2, 3, 4, 5}
// 3 3 Set(5) {1, 2, 3, 4, 5}
// 4 4 Set(5) {1, 2, 3, 4, 5}
// 5 5 Set(5) {1, 2, 3, 4, 5}
for(i of mySet){console.log(i)}//也是能夠的
複製代碼
var mySet2 = new Set([1, 2, 3, 4]);
mySet2.size; // 4
[...mySet2]; // [1, 2, 3, 4]
複製代碼
轉爲Set 再經過[...set] 轉回數組spa
const numbers = [20,3,4,4,2,3,3,4,4,5,5,6,6,7,5,32,3,4,5,20]
console.log([...new Set(numbers)])
// [20, 3, 4, 2, 5, 6, 7, 32]
複製代碼
Object.prototype.toString.call(new Map([['a',1],['b',2]]) )
// "[object Map]"
Object.prototype.toString.call(new Set([[1, 2, 3, 4, 5]]) )
// "[object Set]"
複製代碼