es6數組去重

ES6 提供了新的數據結構 Set。數組

 

特性數據結構

似於數組,但它的一大特性就是全部元素都是惟一的,沒有重複。spa

咱們能夠利用這一惟一特性進行數組的去重工做。code

單一數組的去重。對象

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

結果:blog

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

 

多數組的合併去重it

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

結果:console

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

 

操做class

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 }
相關文章
相關標籤/搜索