ES6-Set篇

作者: 凛冬已至_123 | 来源:发表于2019-08-16 16:20 被阅读0次

Set-ES6提供的一种新的数据结构

Set是一个构造函数,类似于Array; 但是 set 结构只能通过new Set来创建

特性

1.Set数据结构类似于数组,但是成员的值唯一。
2.由于 Set 结构没有键名,只有键值(或者说键名和键值是同一个值,key 和 value都是同一个值

const s = new Set();

[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));
console.log([...s])//[2,3,5,4]
set结构
  • 用途
    1.数组/字符串去重
    Set函数可以接受一个数组或者类数组对象作为参数,用来初始化,...扩展运算符可以将set结构变成数组
//数组去重
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

//字符串去重
[...new Set('ababbc')].join('')
// "abc"

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

  • 属性
    1.Set.prototype.constructor: 构造函数,默认就是Set函数
    2.Set.prototype.size/Set.size: 返回Set实例的总数
  • 操作方法
    1.Set.prototype.add(value): 添加某个值,返回 Set 结构本身。
    2.Set.prototype.delete(value): 删除某个值,返回一个布尔值,表示删除是否成功。
    3.Set.prototype.has(value): 返回一个布尔值,表示该值是否为Set的成员.
    4.Set.prototype.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
  • 遍历方法
    1.Set.prototype.keys(): 返回键名的遍历器
    2.Set.prototype.values(): 返回键值的遍历器
    3.Set.prototype.entries(): 返回键值对的遍历器
    4.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"]

let set = new Set(['red', 'green', 'blue']);

for (let x of set) {
  console.log(x);
}
// red
// green
// blue
  • Set结构转为数组
    1....扩展运算符
const s = new Set([1,2,3,4]);
console.log([...s])//[1, 2, 3, 4]

2.Array.from方法

const items = new Set([1, 2, 3, 4, 5]);
const array = Array.from(items);
console.log(array)//[1, 2, 3, 4, 5]

数组去重

function dedupe(array) {
  return Array.from(new Set(array));
}

dedupe([1, 1, 2, 3]) // [1, 2, 3]

相关文章

  • ES6-Set篇

    Set-ES6提供的一种新的数据结构 Set是一个构造函数,类似于Array; 但是 set 结构只能通过new ...

  • es6-Set集合与Map集合

    title: es6-Set集合与Map集合date: 2018-02-08 21:55:41tags: es6 ...

  • ES6-Set

    Set Set的基本用法 set 类似于数组,且成员值不重复都是唯一的,set本身是一个构造函数。 上面代码通过a...

  • es6-set、map

    Set地址1、地址2 一种新的类似数组的数据结构,保证值唯一。 入参:具有 iterable 接口的数据,如数组:...

  • ES6-set & map

    一、Set Set ,就是一堆东西的集合,Set 有点像 Array-数组, 不过跟数组不一样的是,Set 里面不...

  • git命令运用

    基础篇 远程篇 分支篇 提交篇 冲突篇 回滚篇 删除篇 查看篇

  • 孙子兵法//十三篇

    始计篇、作战篇、谋攻篇、军形篇、兵势篇、虚实篇、军争篇、九变篇、行军篇、地形篇、九地篇、火攻篇与用间篇。

  • 追问目录

    生计篇 求神篇 生日篇 幼稚园篇 幼儿园篇 小学篇 初中篇 钥匙篇 高中篇 过年篇 躲春篇 玩具篇 童年篇 搬家篇...

  • 读《孙子兵法》笔记

    全文约6000字,共13篇,计篇、作战篇、谋攻篇、行篇、势篇、虚实篇、军争篇、九变篇、行军篇、地形篇、九地篇、火攻...

  • 读懂这七首诗词 你就读懂纳兰这一生 | 诗词铺子特别作品

    本文导读: 身世篇 —— 初恋篇 —— 仕途篇 —— 爱情篇 —— 朋友篇 —— 兴亡篇 —— 知音篇 —— 番外...

网友评论

    本文标题:ES6-Set篇

    本文链接:https://www.haomeiwen.com/subject/btxqsctx.html