## 最近做题的时候会经常用到map和set,在此详细记录一下
// 创建空Set
const set = new Set();
// 从可迭代对象创建
const set2 = new Set([1, 2, 3, 2, 1]); // Set(3) {1, 2, 3}
const set3 = new Set('hello'); // Set(4) {'h', 'e', 'l', 'o'}添加元素 - set.add()
检查存在 - set.has()
删除元素 - set.delete()
清空集合 - set.clear()
获取大小 - set.size()
遍历方法 - forEach,keys() / values() 相同
// keys() 和 values() 相同
for (let key of set.keys()) {
console.log(key); // 'a', 'b', 'c'
}
for (let value of set.values()) {
console.log(value); // 'a', 'b', 'c'
}应用:数组去重
const arr = [1, 1, 2, 2, 2, 3, 4, 5]
const uniqueArr = [...new Set(arr)]add()const set = new Set();
set.add(1);
set.add(2);
set.add(2); // 重复,不会被添加
set.add('text');
set.add({ name: 'obj' });
console.log(set); // Set(5) {1, 2, 'text', {name: 'obj'}}has()const set = new Set([1, 2, 3, {a: 1}]);
console.log(set.has(1)); // true
console.log(set.has(4)); // false
console.log(set.has({a: 1})); // false - 不同引用delete()const set = new Set([1, 2, 3, 4]);
set.delete(2);
console.log(set); // Set(3) {1, 3, 4}
console.log(set.delete(5)); // false - 元素不存在clear()const set = new Set([1, 2, 3]);
set.clear();
console.log(set); // Set(0) {}sizeconst set = new Set([1, 2, 2, 3, 3, 3]);
console.log(set.size); // 3// 创建空Map
const map1 = new Map();
// 从二维数组创建
const map2 = new Map([
['name', 'John'],
[1, 'number key'],
[{}, 'object key']
]);
// 从Object创建
const obj = {a: 1, b: 2};
const map3 = new Map(Object.entries(obj));设置键值 map.set()
获取值 map.get()
检查键 map.has()
删除键 map.delete()
清空 map.clear()
获取大小 map.size()
遍历方法
// for of
for (let [key, value] of map) {
console.log(key, value);
}
// forEach
map.forEach((value, key) => {
console.log(`${key}: ${value}`);
});
// keys()
for (let key of map.keys()) {
console.log(key); // 'name', 'age', 'city'
}
// values()
for (let value of map.values()) {
console.log(value); // 'John', 30, 'New York'
}set()const map = new Map();
// 各种类型的键
map.set('string', 'value1');
map.set(123, 'value2');
map.set({key: 'obj'}, 'value3');get()const map = new Map();
map.set('name', 'Alice');
map.set({id: 1}, 'user');
console.log(map.get('name')); // 'Alice'
console.log(map.get({id: 1})); // undefined - 不同引用
const keyObj = {id: 1};
map.set(keyObj, 'user');
console.log(map.get(keyObj)); // 'user' - 相同引用has()const map = new Map();
map.set('active', true);
console.log(map.has('active')); // true
console.log(map.has('inactive')); // falsedelete()const map = new Map([['a', 1], ['b', 2]]);
map.clear();
console.log(map.size); // 0