资讯专栏INFORMATION COLUMN

es6基础0x011:Set

jsyzchen / 1104人阅读

摘要:概述是一个新的数据结构,和其他语言的特性差不多,当然,作为中的,他还是有一些属于的特点。

0x000 概述

Set是一个新的数据结构,和其他语言的特性差不多,当然,作为js中的Set,他还是有一些属于js的特点。

0x001 初始化
new Set([iterable]);

初始化一个Set有一个可选的参数,这个参数必须是一个可迭代的对象可迭代对象包括StringArrayArray-Like obejct(Arguments、NodeList)Typped ArraySetMap用户定义的可迭代对象

字符串

new Set("1234") // Set(4) {"1", "2", "3", "4"}

数组

new Set([1,2,3,4]) // Set(4) {1, 2, 3, 4}

arguments

function sum(){
  return new Set(arguments)
}
sum(1,2,3,4)  // Set(4) {1, 2, 3, 4}

Set

new Set(new Set([1,2,3,4])) // Set(4) {1, 2, 3, 4}

0x002 添加值

初始化一个Set之后,可以继续往里面添加值

let set=new Set()
set.add(1)
set.add(1)
set.add(1)
console.log(set) // Set(1) {1}

借用这个特性可以搞很多事,比如过滤重复值

new Set([1,1,2,3]) // Set(3){1,2,3}

但是注意,两个相同的对象字面量是不同的对象,具有不同的引用,所以Set是无法将两个不同引用的对象标记为同一个的,即使他们看过去是一样的

let a={num:1}
let b={num:1}
console.log(a===b) //false
new Set(a, b)// Set(2){{num:1},{num:2}}
let c=a
console.log(c===a)//true
new Set(a,c)// Set(1){{num:1}}
0x003 判断是否包含
let set=new Set([1,2,3])
set.has(1) // true
set.has(4) //false
0x004 获取数量
let set=new Set([1,2,3])
set.size //3
0x005 删除
let set=new Set([1,2,3])
set.delete(1)// true
set.delete(1)// false
0x006 清空
let set=new Set([1,2,3])
set.clear()
console.log(set) // Set(0){}
0x007 遍历
let set=new Set([1,2,3])
set.forEach((s)=>{console.log(s)})
// 1
// 2
// 3
0x008 获取迭代器
let set=new Set([1,2,3])
let entries=set.entries()
console.log(entries.next().value) // [1,1]
console.log(entries.next().value) // [2,2]
console.log(entries.next().value) // [3,3]
console.log(entries.next().value) // undefined

for(let item of set){
    console.log(item)
}
// 1
// 2
// 3
0x009 获取键迭代器
let set=new Set([1,2,3])
let keys=set.keys()
console.log(keys.next().value) // 1
console.log(keys.next().value) // 2
console.log(keys.next().value) // 3
console.log(keys.next().value) // undefined

for(let {key} of set){
    console.log(key)
}
// 1
// 2
// 3
0x010 获取值迭代器
let set=new Set([1,2,3])
let values=set.values()
console.log(values.next().value) // 1
console.log(values.next().value) // 2
console.log(values.next().value) // 3
console.log(values.next().value) // undefined

for(let {value} of set){
    console.log(value)
}
// 1
// 2
// 3

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

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

相关文章

  • es6基础0x012:Map

    摘要:概述也是一个新的数据结构,在中其实也经常用到,比如下面的栗子,我们经常这么使用一个对象,与其说他是对象,其实他更像一个,但是比起真正的,这个还是有点弱了,初始化初始化一个有一个可选的参数,该参数必须是一个可迭代对象,可迭代对象包括和用户定 0x000 概述 Map也是一个新的数据结构,在js中其实也经常用到,比如下面的栗子,我们经常这么使用一个对象,与其说他是对象,其实他更像一个Map...

    DesGemini 评论0 收藏0
  • es6基础0x020:代理

    摘要:概述代理嘛,就是请代理人代替自己做某件事,但是和自己不一样的是代理人可以有自己的行为,甚至可以做出和预期相违背的行为。 0x000 概述 代理嘛,就是请代理人代替自己做某件事,但是和自己不一样的是代理人可以有自己的行为,甚至可以做出和预期相违背的行为。 0x001 栗子 声明一个普通对象origin,他有一个属性name let origin={ name: origin } ...

    hatlonely 评论0 收藏0
  • es6基础0x021:反射

    摘要:概述反射说起来和上一章节的代理基本一样,只是使用的方式不同,设计理念也不同。 0x000 概述 反射说起来和上一章节的代理基本一样,只是使用的方式不同,设计理念也不同。 反射提供了一系列的静态函数,可以使用Reflect.function_name(...prams)调用,这一系列的方法和代理的处理器对象方法一致 0x001 apply 语法 Reflect.apply(targ...

    booster 评论0 收藏0
  • React入门0x011: 样式

    摘要:当然这个对象的键值取值必须在的有效取值范围内才行,否则,浏览器可解析不了。 0x000 概述 这一章讲react中的样式 0x001 样式也可以是js 再声明一遍,在js中,什么都是js,样式也是,但是样式分为两种,内联样式和外联样式 内联样式: 内联样式可以写在标签的style属性中 我们先尝试传统写法 import React from react import React...

    Pikachu 评论0 收藏0

发表评论

0条评论

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