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