一、Set的用法
1.去除数组重复值;
const set = new Set([1, 2, 3, 4, 4]);
const s = [...set];
console.log(s);
// [1, 2, 3, 4]
2.实例方法:
-add(value):添加某个值,返回 Set 结构本身。
-delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
-has(value):返回一个布尔值,表示该值是否为Set的成员。
-clear():清除所有成员,没有返回值。
-delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
-has(value):返回一个布尔值,表示该值是否为Set的成员。
-clear():清除所有成员,没有返回值。
const s = new Set();
s.add(1).add(2).add(2);
// 注意2被加入了两次,但是只会加入一个。 s.size // 2 s.has(1) // true s.has(2) // true s.has(3) // false s.delete(2); s.has(2) // false
3.遍历方法:
-keys():返回键名的遍历器
-values():返回键值的遍历器
-entries():返回键值对的遍历器
-forEach():使用回调函数遍历每个成员
let set = new Set(['red', 'green', 'blue']); for (let item of set.keys()) { console.log(item); } // red // green // blue for (let item of set.values()) { console.log(item); } // red // green // blue for (let item of set.entries()) { console.log(item); } // ["red", "red"] // ["green", "green"] // ["blue", "blue"]
let set = new Set([1, 4, 9]);
set.forEach((value, key) => console.log(key + ' : ' + value))
// 1 : 1
// 4 : 4
// 9 : 9
3.结合扩展运算符(...
)、map
和filter方法使用
// (1)结合扩展运算符
let arr = [3, 5, 2, 2, 5, 5];
let unique = [...new Set(arr)];
// [3, 5, 2]
// (2)结合map
let set = new Set([1, 2, 3]); set = new Set([...set].map(x => x * 2)); // 返回Set结构:{2, 4, 6}
// (3)结合filter
let set = new Set([1, 2, 3, 4, 5]);
set = new Set([...set].filter(x => (x % 2) == 0));
// 返回Set结构:{2, 4}
// 实现交集、并集、差集let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);
// 并集
let union = new Set([...a, ...b]);
// Set {1, 2, 3, 4}
// 交集
let intersect = new Set([...a].filter(x => b.has(x)));
// set {2, 3}
// 差集
let difference = new Set([...a].filter(x => !b.has(x)));
// Set {1}
二、weakSet的用法
和Set用法相同,唯一区别是接受对象。
具体查看文档,感觉没怎么用过
三、Map的用法
和对象(Object)相似,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。
具体查看文档,感觉没怎么用过
四、WeakMap结构与Map结构类似,也是用于生成键值对的集合。
具体查看文档,感觉没怎么用过