ES6---Set和Map详解

发布时间:2024年01月09日

ES6里面的Set和Map用法:
1.Set是一种新的数据结构,类似于数组,里面的成员是唯一的,没有重复的值。
Set实例的方法分为两大类:

let set  = new Set()

(1)操作方法:
1>set.add() — 添加某个值,返回set结构本身
2>set.delete() — 删除某个值,返回布尔值,是否删除成功
3>set.has() — 判断该值是否是该set的一个成员,返回布尔值
4>set.clear() — 清除set所有成员,无返回值
5>set.size() — set实例的成员总数
(2)遍历方法:
Set的遍历顺序就是插入顺序。这个特性有时非常有用,比如使用Set保存一个回调函数列表,调用时就能保证按照添加顺序调用
1>set.keys() — 返回键名

let set = new Set(['red', 'green', 'blue']);
for (let item of set.keys()) {
  console.log(item);
}

2>set.values() — 返回键值
3>set.entries() — 返回键值对
4>set.forEach() — 回调函数遍历每个成员

let set = new Set([1, 4, 9]);
set.forEach((value, key) => console.log(key + ' : ' + value))

2.Map是键值对形式的数据结构,类似于对象,也是键值对的集合,键的类型不限于字符串,任何类型的值都可以当做键。如果你需要“键值对”的数据结构,map比Object更适合。
Map实例的方法分为两大类:

let map = new Map()

(1)操作方法:
1>map.set(key,value) — set方法设置键名对应的键值为value,返回整个Map结构,若此key存在,则更新此值;不存在就新生成改键。
2>map.get(key) — get方法读取key对应的键值,如果找不到key,返回undefined
3>map.has(key) — 返回布尔值,某个键是否存在当前map中
4>map.delete(key) — 删除某个键,返回布尔值
5>map.clear() — 清除所有成员,无返回值
6>map.size() — Map结构的成员总数
(2)遍历方法:
Map的遍历顺序就是插入顺序,三个遍历器生成函数和一个遍历方法
1>map.keys() — 返回键名

const map = new Map([
  ['F', 'no'],
  ['T',  'yes'],
]);
for (let key of map.keys()) {
  console.log(key);
}

2>map.values() — 返回键值
3>map.entries() — 返回键值对
4>map.forEach() — 回调函数遍历每个成员

Map与其他数据结构的互相转换
1)Map–>数组

1.拓展运算符
2. 使用 Array.form
let map2 = new Map([[1, 2]])
let arr2 = Array.from(map2)

3. 使用遍历 forEach
let map3 = new Map([[1, 2]])
let arr3 = []
map3.forEach(item => {
    arr3.push([item[0], item[1]])
})

4.使用遍历 for...of
let map4 = new Map([[1, 2]])
let arr4 = []
for(let [key, value] of map4){
arr4.push([key, value])
}

2)数组–>Map

1.直接作为 Map 参数传入
let arrRes1 = [[1, 2]]
let mapRes1 = new Map(arrRes1) 

2.forEach
let arrRes2 = [[1, 2]]
let mapRes2 = new Map()
arrRes2.forEach(item => {
    mapRes2.set(item[0], item[1])
})

3.for循环
let arrRes3 = [[1, 2]]
let mapRes3 = new Map()
for(let i = 0; i < arrRes3.length; i++){
    mapRes3.set(arrRes3[i][0], arrRes3[i][0])
}

3)对象–>Map

1.entries
let obj = {"a":1, "b":2};
let map = new Map(Object.entries(obj));
2.for...in
let obj = {"a":1, "b":2};
let map = new Map()
for(let key in obj){
    map.set(key, obj[key])
}

4)Map–>对象

function strMapToObj(strMap) {
  let obj = Object.create(null);
  for (let [k,v] of strMap) {
    obj[k] = v;
  }
  return obj;
}
文章来源:https://blog.csdn.net/qq_44971069/article/details/135403644
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。