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添加