ES6,新增数据结构Set的用法

ES6 提供了新的数据结构 Set。

特性

似于数组,但它的一大特性就是所有元素都是唯一的,没有重复。

我们可以利用这一唯一特性进行数组的去重工作。

单一数组的去重。

let set6 = new Set([1, 2, 2, 3, 4, 3, 5])
console.log(‘distinct 1:‘, set6)

结果:

distinct 1: Set { 1, 2, 3, 4, 5 }

多数组的合并去重

let arr1 = [1, 2, 3, 4]
let arr2 = [2, 3, 4, 5, 6]
let set7 = new Set([...arr1, ...arr2])
console.log(‘distinct 2:‘, set7)

结果:

distinct 2: Set { 1, 2, 3, 4, 5, 6 }

操作

1.向Set中添加元素。

let set1 = new Set()
set1.add(1)
set1.add(2)
set1.add(3)
console.log(‘added:‘, set1)

结果:

added: Set { 1, 2, 3 }

2.从Set中删除元素。

let set1 = new Set()
set1.add(1)
set1.add(2)
set1.add(3)
set1.delete(1)
console.log(‘deleted:‘, set1)

结果:

deleted: Set { 2, 3 }

3.判断某元素是否存在。

let set1 = new Set()
set1.add(1)
set1.add(2)
set1.add(3)
set1.delete(1)
console.log(‘has(1):‘, set1.has(1))
console.log(‘has(2):‘, set1.has(2))

结果:

has(1): false
has(2): true

4.清除所有元素。

let set1 = new Set()
set1.add(1)
set1.add(2)
set1.add(3)
set1.clear()
console.log(‘cleared:‘, set1)

结果:

cleared: Set {}

Set和Array互转

1.数组转Set

let set2 = new Set([4,5,6])
console.log(‘array to set 1:‘, set2)

let set3 = new Set(new Array(7, 8, 9))
console.log(‘array to set 2:‘, set3)

结果:

array to set 2: Set { 4, 5, 6 }
array to set 3: Set { 7, 8, 9 }

2.Set转数组

let set4 = new Set([4, 5, 6])
console.log(‘set to array 1:‘, [...set4])
console.log(‘set to array 2:‘, Array.from(set4))

结果:

set to array 1: [ 4, 5, 6 ]
set to array 2: [ 4, 5, 6 ]

遍历

可以使用Set实例对象的keys(),values(),entries()方法进行遍历。

由于Set的键名和键值是同一个值,它的每一个元素的key和value是相同的,所有keys()和values()的返回值是相同的,entries()返回的元素中的key和value是相同的。

let set5 = new Set([4, 5, ‘hello‘])
console.log(‘iterate useing Set.keys()‘)
for(let item of set5.keys()) {
  console.log(item)
}

console.log(‘iterate useing Set.values()‘)
for(let item of set5.values()) {
  console.log(item)
}

console.log(‘iterate useing Set.entries()‘)
for(let item of set5.entries()) {
  console.log(item)
}

结果:

iterate useing Set.keys()
4
5
hello
iterate useing Set.values()
4
5
hello
iterate useing Set.entries()
[ 4, 4 ]
[ 5, 5 ]
[ ‘hello‘, ‘hello‘ ]

其他特性

在向Set加入值时,Set不会转换数据类型,内部在判断元素是否存在时用的类似于精确等于(===)的方法,“2”和2是不同的,NaN等于其自身。

let set8 = new Set()
set8.add(NaN)
set8.add(NaN)
console.log(‘NaN===Nan is true:‘, set8)

结果:

NaN===Nan is true: Set { NaN }

End

原文地址:https://www.cnblogs.com/sexintercourse/p/11802400.html

时间: 2024-10-04 17:49:54

ES6,新增数据结构Set的用法的相关文章

ES6新增数据结构Map的用法

Javascript的Object本身就是键值对的数据结构,但实际上属性和值构成的是”字符串-值“对,属性只能是字符串,如果传个对象字面量作为属性名,那么会默认把对象转换成字符串,结果这个属性名就变成”[object Object]“. ES6提供了”值-值“对的数据结构,键名不仅可以是字符串,也可以是对象.它是一个更完善的Hash结构. 特性 1.键值对,键可以是对象. const map1 = new Map() const objkey = {p1: 'v1'} map1.set(objk

ES6新增数据结构WeakSet的用法

WeakSet和Set类似,同样是元素不重复的集合,它们的区别是WeakSet内的元素必须是对象,不能是其它类型. 特性: 1.元素必须是对象. 添加一个number类型的元素. const ws = new WeakSet() ws.add(1) 结果是报类型错误. TypeError: Invalid value used in weak set 添加一个对象. const ws = new WeakSet() var a = {p1:'1', p2:'2'} ws.add(a) conso

Map()--es6新增数据结构

1.实例属性和操作方法 1)size属性 const map = new Map(); map.set('foo', true); map.set('bar', false); console.log(map.size); 2)set(key, value) 3)get(key) 如果找不到key,返回undefined 4)has(key) 5)delete(key) 6)clear() 清除所有成员 2.遍历方法 -keys():返回键名的遍历器. -values():返回键值的遍历器. -

ES6新增的 Set 和 WeakSet

什么是Set结构 Set是ES6给开发者带来的一种新的数据结构,你可以理解为值的集合.我们平时见到的数组Array也是一种数据结构,但是Set跟其他数据结构不同的地方就在于:它的值不会有重复项. 基本用法 我们从最基本的学起,Set的用法: 1 var s = new Set(); 2 console.log(s); 3 //打印结果:Set {} Set本身是一个构造函数,你可以理解为一个类,使用的时候需要用new来创建一个实例.以上的案例就是这样创建出一个Set结构,我们打印出来看看,控制台

【ES6新增语法详述】 𳞰

目录 1. 变量的定义 let const 2. 模版字符串 3. 数据解构 4. 函数扩展 设置默认值 箭头函数 5. 类的定义 class 6. 对象的单体模式 原文: http://blog.gqylpy.com/gqy/275 "@ ES6新增了关于变量的定义,函数扩展,数据结构,类,模块等概念,本文将详细介绍常用的ES6语法. *** 1. 变量的定义 let ES6中新增了let语法,用来声明变量,用法类似var. ==let定义的变量只在当前代码块内有效.== 如下示例: <

es6新增的数组方法和对象

es6新增的遍历数组的方法,后面都会用这个方法来遍历数组,或者对象,还有set,map let arr=[1,2,3,4,3,2,1,2]; 遍历数组最简洁直接的方法法 for (let value of arr) { console.log(value);//输出1,2,3,4,3,2,1,2 } 1. 数组.map() 返回一个新的数组,es5要复制一个新的数组我们一般用循环,现在直接用map let arr=[1,2,3,4,3,2,1,2]; let newArr=arr.map((va

ECMAScript简介以及es6新增语法

ECMAScript简介 ECMAScript与JavaScript的关系 ECMAScript是JavaScript语言的国际化标准,JavaScript是ECMAScript的实现.(前者是后者的规格,后者是前者的实现.但通常两者是可互换的.) ESMAScript的历史 1996年11月,Netscape公司将Js提交给国际化标准组织ECMA,当初该语言能够成为国际化标准. 1997年,ECMAScript 1.0版本推出.(在这年,ECMA发布262号标准文件(ECMA-262)的第一版

ES6 新增的一些特性

1. let关键字 (1)基本用法:let关键字用来声明变量,它的用法类似于var,都是用来声明变量. (2)块级作用域:let声明的变量,只在let关键字所在的代码块内有效. { var a = 10; let b = 10; } console.log(a); //10 console.log(b); //error: b is not defined var c = 10; { var c = 20; } console.log(c); //20 var d = 10; { let d =

ES6新增—新增循环、箭头函数

5.新增循环: 以前for循环,for in循环 ES6新增循环: for of 循环:遍历(迭代,循环)整个对象,变现类似于for in 循环 两者的区别: for in循环:既可以循环数组,又可以循环json 循环数组:i代表数组的索引 var arr1=['apple','banana','appel','orange']; for(var i in arr1){ console.log(i); //0,1,2,3 } 循环json:name代表json的索引 var json=[a:'a