Map与Set

Map 对象

Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。

一个 Object 的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值:字符串、对象、函数、NaN

var myMap = new Map();
var keyString = "0"; 
 
myMap.set(keyString, "zero");
 
myMap.get(keyString);    // "字符串"
myMap.get("0");   // "字符串"  因为 keyString === 'a string'

//再加一个
myMap.set("1", "one");
myMap.size;//2
var outArray = Array.from(myMap);//[["0","zero"],["1","one"]]  Map对象转化为数组,可以看出outArray是一个二维数组,可以通过outArray[0][0] 访问具体值

遍历Map方式:

for...of  

var myMap = new Map();
myMap.set(0, "zero");
myMap.set(1, "one");
 
// 遍历map
for (var [key, value] of myMap) {
  console.log(key + " = " + value);
}

myMap.entries();//返回Iterator 对象,包含了 Map 对象中每个元素的 [key, value] 数组。
//Iterator对象:是一个引用型变量,为了遍历容器对象中的元素而不暴露容器对象内部的细节
myMap.keys();//返回Iterator 对象,包含了 Map 对象中每个元素的key。
//for(var key of myMap.keys())

myMap.values();//
返回Iterator 对象,包含了 Map 对象中每个元素的value。

forEach()

// 将会显示两个 logs。 一个是 "0 = zero" 另一个是 "1 = one"
myMap.forEach(function(value, key) {
  console.log(key + " = " + value);
}, myMap)

 

Set 对象

Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。

let mySet = new Set();
 
mySet.add(1); // Set(1) {1}
mySet.add(5); // Set(2) {1, 5}
mySet.add(5); // Set(2) {1, 5} 这里体现了值的唯一性
mySet.add("some text"); // Set(3) {1,5,"some text"}

set对象作用

1、数组去重

var mySet = new Set([1, 2, 3, 4, 4]);
[...mySet]; // [1, 2, 3, 4]  直接输出mySet,是set对象。

2、并集

var a = new Set([1, 2, 3]);
var b = new Set([4, 3, 2]);
var union = new Set([...a, ...b]); // set(4) {1, 2, 3, 4} 
var myArray = [...union];//[1,2,3,4] 数组与set对象互相转换的方法

3、交集、差集(略)

学习原文

猜你喜欢

转载自www.cnblogs.com/liangtao999/p/11695997.html
今日推荐