简单使用数组
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]"
复制代码