set本身是乙個建構函式,用來生成set資料結構就像array本身是乙個建構函式,用來生成陣列資料結構
set裡面的值不可以重複進而引申出陣列去重的方法,
[...new set([1,2,33,3,3,4,])
=>set也可以接收物件作為引數
function
fin(
)let s =
newset
(fin()
);
5和『5』是不同的值
set內部nan和nan是相等的
兩個物件總是不想等的,因為物件的值其實是位址
set結構的例項預設就是可以遍歷的,所以可以省略遍歷器方法,直接遍歷該物件
let set1 =
newset([
,)for(
let x of set1)
//foreach方法
set1.
foreach
((vlaue,key)
=>
//foreach方法的引數是鍵值鍵名,集合本身
舉例:
注意:關於filter裡面的箭頭函式,如果只要一條語句,不加大括號,可以不用返回值,如果加了大括號。就必須帶上return
另外,陣列的find引數是函式,cha找符合條件的值,includes判斷有沒有
//求兩陣列的交集
//輸出x的值
let arr1 =[1
,2,3
,4,5
];let arr2 =[3
,4,5
,6,7
];console.
log(arr1.
includes(1
));let set1 =
newset([
...arr1,
...arr2]);
let arr3 =
[...set1]
.filter
((value)
=>);
console.
log(arr3);}
//或者
let set3 =
newset([
...set2]
.filter
((x)
=>set1.
has(x)
;//求並集
let set3 =
newset([
...set1,
...set2]);
//差集
let set3 =
newset([
...set2]
.filter
(x)=>
!set1.
has(x)
;
如果想在遍歷的時候改變原來的set結構,需要使用map或者***array.from***
為什麼引入map
因為原本的物件只可以使用字串作為鍵名,引入map之後,鍵名型別多樣化
map的本質
set類似於陣列,map類似於物件,map本質是鍵值對的集合,map也不允許重複
map建構函式
傳入乙個陣列,陣列的元素是鍵值對,不是物件new map([['name','kek'],'name','kkke'])
裡面的值一定加上引號,因為作為陣列的值,加上引號才是字串
實際上執行的演算法
items.
foreach
((key,value)
=>
let map1 =
newmap();
map1.
set(obj,
'okok'
);
map的新增方法是set不是add,刪除delete,判斷has,獲取鍵名對應的值是get
map鍵的規則
型別不同,鍵就不同
對同乙個鍵賦值多次,後乙個覆蓋前乙個
set([
'a']
,'keke');
get(
['a'
])獲取undefine
因為兩次的[『a』]看起來是一樣的,但是由於是引用型別,位址不一樣
nan看作同乙個鍵
map的遍歷
keys 獲取鍵名集合,map.get('key')
values獲取值得集合
entries獲取鍵值對map.entries()或者直接遍歷forof和map也是獲取鍵值對
es6 Set 和Map 資料結構
es6提供了新的資料結構set,它類似於陣列,但是成員的值都是唯一的,沒有重複的值。set 本身是乙個資料結構,用來生成set 資料結構。const s new set 2,3,5,4,5,2,2,2 foreach x s.add x for let i of s 2 3 5 4 set 函式可以...
ES6 Set 和 Map 資料結構
let set new set 1,2,1 console.log set add 增加,返回增加後的set console.log set.add 3 delete 刪除,返回true或false console.log set.delete 2 true has 判斷是否存在某一項,返回true...
ES6 Set與Map資料結構
set 例項的屬性和方法 set類似與陣列,但是成員值唯一沒有重複!let arr 3,5,2,2,5,5 let unique new set arr 3,5,2 set 結構的例項有以下屬性。set 例項的方法分為兩大類 操作方法 用於運算元據 和遍歷方法 用於遍歷成員 四個操作方法 四個遍歷方...