Es6之Set和Map結構

2021-10-23 20:13:32 字數 1848 閱讀 3944

set:類似陣列,但是它的成員沒有重複值

let s = new set();

let s2 = new set([1,2,3,4,1,2,3]);

[1,2,3,4,1,2,3].foreach(x => s.add(x));

console.log(s); //

console.log(s2); //

可以看出會去掉重複值

那我們就可以利用這個特性來去除陣列中重複的值

let s = new set([1,2,3,4,1,2,3]);

let str = [...new set('aaabccdd')].join(''); //去除重複的字元

console.log(s);//

console.log(str); //abcd

set的方法

let s = new set([1,2,3,4,1,2,3]);

s.add(5); //

s.has(5);//true

s.delete(5); //true

s.has(5);//false

s.clear();

console.log(s); //{}

set和array互轉

let s = new set([1,2,3,4,1,2,3]);

console.log(s);//

let arr = array.from(s);

console.log(arr);//[1, 2, 3, 4]

weakset和set類似,但是它只接受物件做為成員

let obj = {}

let s = new weakset();

s.add(obj)

console.log(s);//weakset }

let s1 = new weakset('test'); //typeerror: invalid value used in weak set

方法有:

map結構物件儲存鍵值對。任何值(物件或者原始值) 都可以作為乙個鍵或乙個值。

let map = new map();

map.set('name','lisi');

console.log(map); //

方法:

let map = new map([['age','18']]);

map.set('name','lisi');

console.log(map); //

console.log(map.has('name')); //true

console.log(map.delete('name')); //true

console.log(map) //map(1)

注意在mao中鍵值是根據記憶體位址判斷,如果兩個鍵值值相同位址不同也視為兩個鍵值

let map = new map([['age','18']]);

let a = ['a'];

let b = ['a'];

map.set(a,'a');

map.set(b,'b');

console.log(map);//

map.set(a,'123')

console.log(map); //

上面**可以看出,鍵值是根據記憶體位址判斷是否相同,不是根據值

es6學習之Set和Map結構

set結構是類似於陣列結構,但是成員都是不重複的值 判斷不重複類似object.is 方法,但是 0和 0又是相同的處理,object.is 0,0 false 缺點是沒辦法像陣列一樣通過下標取值的方法.weekset結構和set相似,但是成員只能是物件,且物件是弱引用 成員中的物件不存在了,在本結...

ES6入門之set和map

es6提供了新的資料結構set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。set函式可以接受乙個陣列 或類似陣列的物件 作為引數,用來初始化。例一 var set new set 1,2,3,4,4 set 1,2,3,4 var s newset 2,3,5,4,5,2,2 map x ...

ES6入門之set和map

es6提供了新的資料結構set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。set函式可以接受乙個陣列 或類似陣列的物件 作為引數,用來初始化。例一 var set new set 1,2,3,4,4 set 1,2,3,4 var s new set 2,3,5,4,5,2,2 map x...