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

ES6 提供了新的数据结构 Set以及Map,下面我们来一一讲解。

一、Set

特性

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

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

单一数组的去重。

1.单一数组的去重

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

结果:

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

2.多数组的合并去重

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 {}

5.set容器大小size属性

console.log("容器大小:",set.size); //4

6.数组转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 }

7.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 ]

8.遍历(keys(),values(),entries())

可以使用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)
}

结果:

ES6,新增数据结构Set与Map的用法
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是不同的。

 

二、Map  

 

 

 

 

上一篇:Linux/Centos 正则表达式


下一篇:python基本数据类型三之集合