postpass Map对象和Set对象 – 个人博客

Map对象和Set对象

Map和Set对象是在ES6中被引入的,作为一种由key值标记的数据容器。 Map和Set对象承载的数据元素可以按照插入时的顺序,被迭代遍历。

Map

由于传统的JavaScript对象只能用字符串当做键,给开发带来很大限制,ES6增加Map数据结构,使得各种类型的值(包括对象)都可以作为键。 Map结构提供了“键—值”的对应,是一种更完善的 Hash 结构实现。

let a = new Map();
let b = {name: 'leo' };
a.set(b,'my name'); // 添加值
a.get(b);           // 获取值
a.size;      // 获取总数
a.has(b);    // 查询是否存在
a.delete(b); // 删除一个值
a.clear();   // 清空所有成员 无返回

遍历方法:

keys():返回键名的遍历器。 values():返回键值的遍历器。 entries():返回所有成员的遍历器。 forEach():遍历 Map 的所有成员。

let a = new Map([
    ['name','zs'],
    ['age',18]
])

for (let i of a.keys()){...};
for (let i of a.values()){...};
for (let i of a.entries()){...};
a.forEach((values,keys,map)=>{
    console.log(`key:${keys},value:${values},map:${map}`)
})

将Map结构转成数组结构

let a1 = [...a.keys()];   // a1 => ["name", "age"]
let a2 = [...a.values()]; // a2 =>  ["zs", 18]
let a3 = [...a.entries()];// a3 => [['name','zs'], ['age',18]]

将数组结构转成Map:

let arr = [['name','zs'],['age',18]];
let map = new Map(arr);

Set

Set数据结构类似数组,但所有成员的值唯一。 Set本身为一个构造函数,用来生成Set数据结构,使用add方法来添加新成员。

let a = new Set([1,2,3,3,4]);
[...a]; // [1,2,3,4]
a.size; // 4

// 数组去重
[...new Set([1,2,3,4,4,4])];// [1,2,3,4]


操作方法:
add(value):添加某个值,返回 Set 结构本身。
delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
has(value):返回一个布尔值,表示该值是否为Set的成员。
clear():清除所有成员,没有返回值。

标签

发表评论