set數據結構:
?? ?類似數組,但是里面不能有重復值,如果有,只顯示一個set用法:
?? ?let setArr = new Set(['a','b']);
?? ?setArr.add('a'); ? 往setArr里面添加一項
let setArr = new Set().add('a').add('b').add('c');
?? ?setArr.delete('b');?? ?刪除一項
?? ?setArr.has('a')?? ?判斷setArr里面有沒有此值
?? ?setArr.size?? ?個數
? ? setArr.clear();?? ?清空
循環:
a)
let setArr = new Set(['a','b','c','d']);for(let item of setArr){//默認就是valueconsole.log(item);}
b). for(let item of setArr.keys()){console.log(item);}
c). for(let item of setArr.values()){}
d). for(let [k,v] of setArr.entries()){}e). setArr.forEach((value,index) =>{
?? ??? ? ? ? ? ? ? ?console.log(value, index);
?? ??? ? ? ? ? ?});
作用:
1、去重?
let arr = [1,2,3,4,5,6,7,6,5,4,3,2,1,2,3,4,4];let newArr = [...new Set(arr)];console.log(newArr);
補充:
1、讓set數據結構變成數組:
?? ?[...set]2、想讓set使用數組的,map循環和filter:
let set = new Set([1,2,3]);let set2 = new Set();for(let value of set.values()){set2.add(value*2);}console.log(set2);
?map() 方法返回一個新數組,數組中的元素為原始數組元素調用函數處理后的值。
let set = new Set([1,2,3]);set = new Set([...set].map(val=>val*2));console.log(set);
filter() 方法創建一個新的數組,新數組中的元素是通過檢查指定數組中符合條件的所有元素。
let set = new Set([1,2,3,4,5,6]);set = new Set([...set].filter(val=>val%2==0));console.log(set);
new Set([]);?? ?存儲數組, 這種寫法對
錯誤:
let set = new Set({a:1,b:2});set.forEach((item) =>{console.log(item);})
new WeakSet({})?? ?存儲json,這種寫法不靠譜
?? ?WeakSet沒有size,也沒有clear()
?? ?有, add(), has(), delete()
初始往里面添加東西,是不行的。最好用add添加