【无标题】

set

功能:

  • 数组去重
// 去除数组的重复成员1 [...new Set(array)]2 Array.from(new Set(array));
  • 将类数组转换为数组
const set = new Set(document.querySelectorAll('div'));
set.size // 56
  • 去除字符串里面的重复字符。
[...new Set('ababbc')].join('')
// "abc"

2、类似于数组,但是成员的值都是唯一的,没有重复的值。

//本身是一个构造函数,用来生成 Set 数据结构。
const s = new Set();

[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));

for (let i of s) {
  console.log(i);
}
// 2 3 5 4

向 Set 加入值的时候,不会发生类型转换。
所以5和"5"是两个不同的值。Set 内部判断两个值是否不同,使用的算法叫做“Same-value-zero equality”,它类似于精确相等运算符(===),主要的区别是向 Set 加入值时认为NaN等于自身,而精确相等运算符认为NaN不等于自身。
两个对象总是不相等的。

Set 实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)

操作方法
增删查清,这些方法都添加到原型上了。

  • Set.prototype.add(value):添加某个值,返回 Set 结构本身。 可以链式调用
  • Set.prototype.delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
  • Set.prototype.has(value):返回一个布尔值,表示该值是否为Set的成员。
  • Set.prototype.clear():清除所有成员,没有返回值。

将 Set 结构转为数组

Array.from(new Set(array));  转换为数组了

遍历方法
名 值 键值对 回调函数

  • Set.prototype.keys():返回键名的遍历器
  • Set.prototype.values():返回键值的遍历
  • Set.prototype.entries():返回键值对的遍历器
  • Set.prototype.forEach():使用回调函数遍历每个成员

Set的遍历顺序就是插入顺序。这个特性有时非常有用,比如使用 Set 保存一个回调函数列表,调用时就能保证按照添加顺序调用。

keys方法、values方法、entries方法返回的都是遍历器对象(详见《Iterator 对象》一章)。由于 Set 结构没有键名,只有键值(或者说键名和键值是同一个值),所以keys方法和values方法的行为完全一致。

3、map

为了解决 对象的键只能接受字符串
Map 的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。
如果 Map 的键是一个简单类型的值(数字、字符串、布尔值),则只要两个值严格相等,Map 将其视为一个键,比如0和-0就是一个键,布尔值true和字符串true则是两个不同的键。另外,undefined和null也是两个不同的键。虽然NaN不严格相等于自身,但 Map 将其视为同一个键

let map = new Map();

map.set(-0, 123);
map.get(+0) // 123

map.set(true, 1);
map.set('true', 2);
map.get(true) // 1

map.set(undefined, 3);
map.set(null, 4);
map.get(undefined) // 3

map.set(NaN, 123);
map.get(NaN) // 123

Map 结构的实例的属性和操作方法
大小,设值,获取值,判断,删除,清除
size 属性 => 大小
set => 设置键值对,返回整个map结构,所以可以采用链式调用
get=> 获取key对应的关键值
has=> 判断某个键是否在当前map对象中
delete=> 删除某个键,判断是否删除成功,删除失败,则返回false
clear=> 清楚所有成员,没有返回值

map结构的遍历方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值