set && map

572 阅读1分钟

set

  • set代表的就是集合 map hash表
  • 集合就是不能有重复的项目 数组去重 new Set
// generator => iterator
// let set = new Set([1,2,3,3,2,1]); // 他的key 和值时一样的
// 无论什么数据类型 增删改查
// console.log(set.values());
// set.forEach(item => {
//     console.log(item);
// });

示例

// 如何求两个数组 的并集  差集  交集
let arr1 = [1, 2, 3];
let arr2 = [3, 4, 5]; // [...arr1,...arr2]
// set是可以被迭代的 [...set]

// 1)并集
// let set = new Set([...arr1,...arr2]);
// let union = [...set];

// 2)交集
// let s1 = new Set(arr1);
// let s2 = new Set(arr2);
// let intersection = [...s1].filter(item=>{ // 1,2,3  如果返回true 就保留到新的数组中
//     return s2.has(item);
// })
// console.log(intersection);

// 差集
let s1 = new Set(arr1);
let s2 = new Set(arr2);
let intersection = [...s1].filter(item => { // 1,2,3  如果返回true 就保留到新的数组中
    return !s2.has(item);
});
console.log(intersection);

map

// map 叫他hash表  散列
// key不能重复
let map = new Map();
map.set({ a: 1 }, '123');
map.set('b', '456');
map.set({ a: 1 }, 123);

// 用法同 set方法
console.log(map.get('b'));

// WeakMap key只能是一个对象