ES6----set与map

Map大家都很熟悉,是JS的对象,本质上是键值的集合(Hash结构),但是传统上只能用字符串当作键;至于Set,这是ES6提供的新的数据结构,他类似于数组,但是他的成员值都是唯一的,没有重复的值,本质是一个构造函数


Set

Set可以接受一个数组(或者具有iterable接口的其他数据结构)作为参数,用来初始化。还可以通过add方法进行添加数据

// 例一
const set = new Set([1, 2, 3, 4, 4]);
[...set]
// [1, 2, 3, 4]

// 例二
const items = new Set([1, 2, 3, 4, 5, 5, 5, 5]);
items.size // 5

// 例三
const set = new Set(document.querySelectorAll('div'));
set.size // 56

// 类似于
const set = new Set();
document
 .querySelectorAll('div')
 .forEach(div => set.add(div));
set.size // 56

这里衍生了一个去除数组重复数据的方法,同样适用于去除字符串:

       [...new Set(array)]----------去除数组的重复成员

       [...new Set('ababbc')].join('')

在Set中不会发生类型转换


实例的属性和方法

Set总共有两类属性两类方法,一个是她的构造属性一个是她的成员个数属性,分别为Set.prototype.constructor和Set.prototype.size。从数组来看,方法分为操作和遍历两部分,Set同理。分为操作数据和遍历数据

操作数据:总共有四种方法,分别为增、删、is判断,清除

  • Set.prototype.add(value):增,返回Set
  • Set.prototype.delete(value):删,返回布尔值,表示成功与否
  • Set.prototype.has(value):是否组内值判断,返回布尔值,表示是否
  • Set.prototype.clear():清除,不返回状态

遍历方法:也有四种,分别为遍历键名,遍历键值,遍历键值对,遍历每个成员

  • Set.prototype.keys():遍历键名,通俗的讲就是属性
  • Set.prototype.values():遍历键值,只有值
  • Set.prototype.entries():遍历键值对,同时返回属性和值
  • Set.prototype.forEach():遍历每个成员,
let set = new Set(['red', 'green', 'blue']);

for (let item of set.keys()) {
  console.log(item);
}
// red
// green
// blue

for (let item of set.values()) {
  console.log(item);
}
// red
// green
// blue

for (let item of set.entries()) {
  console.log(item);
}
// ["red", "red"]
// ["green", "green"]
// ["blue", "blue"]

Map

ES6中的Map对象相较于传统的map做了扩展,其中键的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

实例的属性和方法

Map同样具有他的个数属性size,同时具有set()、get()、has()、delete()、clear()方法。遍历方法同上。

与其他数据结构互相转换

Map可以数组、对象、JSON等数据结构进行互换


总结

  1. map解决了键只能是字符串的限制
  2. set解决了数组中没有重复值的问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值