资讯专栏INFORMATION COLUMN

Set方法

Loong_T / 3234人阅读

摘要:返回一个布尔值,表示该值是否为的成员。注意被加入了两次方法可以将结构转为数组。数组去重的函数遍历的方法返回键名的遍历器返回键值的遍历器返回键值对的遍历器使用回调函数遍历每个成员需要特别指出的是,的遍历顺序就是插入顺序。

新增加的数据类型 类似于数组 但是和数组不同的地方就是 里面不会存在相同的值,在里面 NaN都只能出现一个,但是里面有一个问题,就是引用类型的值是不会相等的

    let set = new Set();

    set.add({});
    set.size // 1
    
    set.add({});
    set.size // 2
如何使用
    let set = new Set();
参数(数组 或者 具有 iterator接口的其他数据)
    // 例一
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)]
全部的api 增加 删除 查找 清除 (没得修改)
Set.prototype.constructor:构造函数,默认就是Set函数。
Set.prototype.size:返回Set实例的成员总数。
add(value):添加某个值,返回 Set 结构本身。
delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
has(value):返回一个布尔值,表示该值是否为Set的成员。
clear():清除所有成员,没有返回值。
    s.add(1).add(2).add(2);
    // 注意2被加入了两次

    s.size // 2
    
    s.has(1) // true
    s.has(2) // true
    s.has(3) // false
    
    s.delete(2);
    s.has(2) // false
Array.from方法可以将 Set 结构转为数组。
const items = new Set([1, 2, 3, 4, 5]);
const array = Array.from(items);

// 数组去重的函数
function dedupe(array) {
  return Array.from(new Set(array));
}

遍历的方法

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

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

set = new Set([1, 4, 9]);
set.forEach((value, key) => console.log(key + " : " + value))
// 1 : 1
// 4 : 4
// 9 : 9
我们可以简介使用数组的方法 先转换为数组 利用 Array.from()或者 [...] 解构赋值
let set = new Set([1, 2, 3]);
set = new Set([...set].map(x => x * 2));
// 返回Set结构:{2, 4, 6}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/94193.html

相关文章

  • Set和Map数据结构。

    摘要:本身是一个构造函数,用来生成数据结构。该数组的成员是一个个表示键值对的数组。张三张三事实上,不仅仅是数组,任何具有接口每个成员都是一个双元素的数组的数据结构都剋以当作构造函数的参数。实例的属性和操作方法属性属性返回结构的成员总数。 ES6提供了新的数据结构Set,它类似与数组,但是成员值都是唯一的,没有重复的值。 Set本身是一个构造函数,用来生成Set数据结构。 const s = ...

    lixiang 评论0 收藏0
  • es6 Set和WeakSet

    摘要:返回一个布尔值,表示该值是否为的成员。清除所有成员,没有返回值。上面代码中,方法返回的遍历器,同时包括键名和键值,所以每次输出一个数组,它的两个成员完全相等。因此,适合临时存放一组对象,以及存放跟对象绑定的信息。 Js大部分历史时期都只存在一种集合类型,也就是数组类型。数组在 JS 中的使用正如其他语言的数组一样,但缺少更多类型的集合导致数组也经常被当作队列与栈来使用。数组只使用了数值...

    marser 评论0 收藏0
  • es6 Map和set

    摘要:返回一个布尔值,表示该值是否为的成员。清除所有成员,没有返回值。该数组中的每一项也必须是数组,内部数组的首个项会作为键,第二项则为对应值。返回所有成员的遍历器需要特别注意的是,的遍历顺序就是插入顺序。 Js大部分历史时期都只存在一种集合类型,也就是数组类型。数组在 JS 中的使用正如其他语言的数组一样,但缺少更多类型的集合导致数组也经常被当作队列与栈来使用。数组只使用了数值型的索引,而...

    superPershing 评论0 收藏0
  • 【ES6脚丫系列】Set+WeakSet+Map+WeakMap

    摘要:返回一个布尔值,表示该值是否为的成员。清除所有成员,没有返回值。返回的都是遍历器对象。结构的实例的方法,用于对每个成员执行某种操作,没有返回值。这个特点意味着,无法引用的成员,因此是不可遍历的。数组成员是一个或多个表示键值对的一维数组。 本文字数:4700+,阅读时间约10分钟。 如果有理解不到位的地方,欢迎大家纠错。 一、Set 【01】Set是一种数据结构。类似于数组,但是成员的值...

    lyning 评论0 收藏0
  • ES6系列---Set集合与Map集合

    摘要:中模拟与长久以来,数组一直是中唯一的集合类型。用数组初始化集合事实上,只要是可迭代对象数组集合集合,都可以作为构造函数的参数。构造函数通过迭代器从参数中提取值。 ES5中模拟Set与Map 长久以来,数组一直是JavaScript中唯一的集合类型。如果开发者们需要使用非数值型索引,就会用非数组对象创建所需的数据结构,而这就是Set集合与Map集合的早期实现。 一般来说,Set集合常被用...

    happyhuangjinjin 评论0 收藏0
  • 细说es6中的Set和Map

    摘要:返回一个布尔值,表示该值是否为的成员。返回键名的遍历器返回键值的遍历器返回键值对的遍历器使用回调函数遍历每个成员需要特别指出的是,的遍历顺序就是插入顺序。该数组的所有成员,都会自动成为实例对象的成员。这意味着,数组的成员只能是对象。 1.Set ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set 本身是一个构造函数,用来生成 Set 数据结构...

    Ryan_Li 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<