Set 对象

Set 对象

set对象允许你储存任何类型的唯一值,无论是原始值或者是对象引用。
set对象是值的集合,所以set是不存在键的。你会发现set对象中并不存在get、set方法,只是存在add、has方法。
set对象是值的集合,你可以按照插入的顺序迭代它的元素。Set中的元素只会出现一次,即Set中的元素是唯一的。
值的相等
因为Set中的值总是唯一的,所以需要判断两个值是否相等。在ECMAScript规范的早期版本中,这不是基于和===操作符中使用的算法相同的算法。具体来说,对于Set+0(+0严格相等于-0)和-0是不同的值。然而,在ECMAScript 2015规范中这点已被更改。换句话说,现在的浏览器在Set中认为+0 0 -0都是相同的。
另外,NaNundefined都可以被存储在Set中,NaN之间被视为相同的值NaN被认为是相同的,尽管NaN !== NaN
**set**构造函数参数
set构造函数接收一个可迭代对象,可迭代对象内部的元素将成为Set对象的元素。
set对象中是不存在键的,虽然你在浏览器中会发现[[Entries]]属性中会存在0,1,2,3这种类似键名的东西。这只是浏览器给你展示出键值对的效果而已,实际上Set对象并不存在键。

const set = new Set(1); // 报错

const set = new Set([1, 2, 3, undefined, NaN, {}]);
console.log(set);

image.png
**Set**实例属性、实例方法
Set实例属性size:返回Set对象中值的个数。注意是[[Entries]]属性内部值的个数,并不是Set对象自身的属性个数。
Set实例方法:

  1. add:在Set对象尾部添加一个元素。返回该set对象。
  2. clear:移除set对象内部的所有元素。
  3. delete:移除值为value的元素,并返回一个布尔值来表示是否移除成功。Set.prototype.has(value)会在此之后返回false
  4. has:返回一个布尔值,表示该值在Set中存在与否。
  5. keys:与values()方法相同,返回一个新的迭代器对象,该对象包含set对象中的按插入顺序排列的所有元素的值。
  6. values:返回一个新的迭代对象,该对象包含set对象中的按插入顺序排列的所有元素的值。
  7. entries:返回一个新的迭代对象,该对象包含Set对象中的按插入顺序排列的所有元素的值的[value, value]数组。为了使这个方法和Map对象保持相似,每个值的键和值相同。因为set对象是不存在键的。
  8. forEach:按照插入的顺序,为Set对象中的每一个值调用一次callbackFn。如果提供了thisArg参数,回调中的this会是这个参数。
const set = new Set([1, 2, false, 'true', 'str']);
set.forEach((key, value) => {
	console.log(key, value); // 1, 1  2, 2  false, false
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

️不倒翁

你的鼓励就是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值