參考:阮一峰 es6入門之set
es6 提供了新的資料結構 set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。
const s =
newset()
;[2,
3,5,
4,5,
2,2]
.foreach
(x => s.
add(x));
// set結構不會新增重複的值
for(
let i of s)
// ## 初始化
// 例一 可以接受乙個陣列作為引數
const
set=
newset([
1,2,
3,4,
4,])
;// ...將乙個陣列轉為用逗號分隔的引數序列
console.
log(
[...
set]);
// 例二
const items =
newset([
1,2,
3,4,
5,5,
5,5,
]);console.
log(items.size)
;// 例三 可以接受具有iterable介面的其他資料結構作為引數
const set2 =
newset
(document.
queryselectorall
('div'))
;console.
log(
set.size)
;// 類似於
const set2 =
newset()
;document
.queryselectorall
('div').
foreach
(div =>
set.
add(div));
console.
log(
set.size)
;// set中nan等於自身,其餘比較相當於 ===
let set3 =
newset()
;let a =
nan;
let b =
nan;
set3.
add(a)
;set3.
add(b)
;console.
log(set3)
// 兩個物件總是不相等的
let set4 =
newset()
;set4.
add();
// 1
console.
log(set4.size)
;set4.
add();
// 2
console.
log(set4.size)
;
const s =
newset()
;s.add(1)
.add(2
).add(2)
;console.
log(s.size)
;console.
log(s.
has(1)
);console.
log(s.
has(2)
);console.
log(s.
has(3)
);s.delete(2
);console.
log(s.
has(2)
);// set轉陣列
const items =
newset([
1,2,
3,4,
5]);
const array = array.
from
(items)
;console.
log(array)
;// 去除陣列重複成員
function
dedupe
(array)
dedupe([
1,1,
2,3]
);
let
set=
newset([
'red'
,'green'
,'blue'])
;// 返回鍵名
for(
let item of
set.
keys()
)// 返回鍵值
for(
let item of
set.
values()
)// set 鍵名=鍵值
// 返回鍵值對
for(
let item of
set.
entries()
)// 可以直接用 for of遍歷set
// for in 和 for of的區別是:in 是遍歷物件,of是遍歷值
for(
let x of
set)
// set也有foreach()方法
set.
foreach
((value, key)
=> console.
log(key +
' : '
+ value));
// 此處foreach方法的引數是乙個處理函式。
// 陣列的 map 和 filter 方法也可以間接用於set
let s =
newset([
1,2,
3]);
// map 將原陣列對映成新陣列
s =new
set(
[...s]
.map
(x => x *2)
);console.
log(s)
;// filter返回過濾後的新陣列
s =new
set(
[...s]
.filter
(x =>
(x %3)
==0))
;console.
log(s)
;// 實現並集、交集、差集
let a =
newset([
1,2,
3]);
let b =
newset([
4,3,
2]);
let union =
newset([
...a,
...b]);
console.
log(union)
;let intersect =
newset([
...a]
.filter
(x => b.
has(x)))
;console.
log(intersect)
;let difference =
newset([
...a]
.filter
(x =>
!b.has
(x)));
console.
log(difference)
;// 在遍歷操作中,同步改變原來的set結構的兩種變通方法
// 1.利用原set結構對映出乙個新的結構,然後賦值給原來的set結構
let set1 =
newset([
1,2,
3]);
set1 =
newset([
...set1]
.map
(val => val *2)
);console.
log(set1)
;// 2.利用array.from
let set2 =
newset([
1,2,
3]);
set2 =
newset
(array.
from
(set2, val => val *2)
);console.
log(set2)
;
es6 基本用法
一 let 命令 基本用法 1 塊及作用域 var d 1 if true console.log d 4 d被覆蓋 let c 2 if true console.log c 2上面的 中 分別用 var 和 let 宣告了兩個變數 var 宣告的即使在作用域的也可以覆蓋之前宣告 let 宣告的變...
ES6的Map基本用法
使用方法 var map newmap map的迴圈 arr.foreach key,value console.log map set 是給map集合設定鍵值對元素 引數1 鍵 引數2 值 get 是獲取map集合中指定鍵的值 判斷指定鍵是否存在於map集合中 返回布林型別的值 var map n...
es6中Set陣列去重用法
var arr 1,4,5,1,4,3,1,7 arr1 2,7,9 arr2 8,0 var str abcdefgacd var obj obj1 去重 console.log new set arr 陣列去重簡寫 1,2,3,4,5,7,8,9,0 console.log array.from...