Set
1:基本概念
let set = new Set([1, 2, 3, 2, 1]);
console.log(set);
// Set(3){ 1, 2, 3 }
[...set];
// [1, 2, 3]
let set = new Set(document.getElementsByName('div'));
set.size;
// 0
let set = new Set([1, 2, 3, 2, 1]);
let set = new Set([5, '5']);
set;
// Set(2){ 5, '5' }
let set = new Set([NaN, NaN]);
set;
// Set(1){ NaN }
let set = new Set([{}, {}]);
set;
// Set(2){ {...}, {...} }
let set = new Set('abcdabcd');
set;
// Set(4){ 'a', 'b', 'c', 'd' }
2:属性和方法
let set = new Set([1, 2, 3, 4]);
set.size;
// 4
let set = new Set([1, 2, 3, 4]);
set.add(5);
// Set(5){ 1, 2, 3, 4, 5 }
let set = new Set([1, 2, 3, 4]);
set.delete(4);
// true
let set = new Set([1, 2, 3, 4]);
set.has(4);
// true
let set = new Set([1, 2, 3, 4]);
set.clear();
set;
// Set(0){ }
3:Set遍历
let set = new Set(['Eric', 'Iven', 'David']);
set.keys();
// SetIterator {"Eric", "Iven", "David"}
[...set.keys()];
//(3) ["Eric","Iven","David"]
let set = new Set(['Eric', 'Iven', 'David']);
set.values();
// SetIterator {"Eric", "Iven", "David"}
let set = new Set(['Eric', 'Iven', 'David']);
set.entries();
// SetIterator {"Eric" => "Eric", "Iven" => "Iven", "David" => "David"}
let set = new Set(['Eric', 'Iven', 'David']);
set.forEach(s => s);
//
Eric
Iven
David
4:WeakSet(弱应用)
- 只能放置对象的弱引用Se
- 其他对象不再引用该对象(DOM), 垃圾回收机制会自动回收该对象所占用的内存
- 适合临时存放一组对象
- 无size
- 不可遍历
- add
- delete
- has
Map
1:基本概念
let map = new Map();
let names = ['Eric', 'Iven'];
map.set(names, 'Eric and Iven');
map.get(names);
// Eric and Iven
let map = new Map([
['name', 'Eric'],
['name', 'Iven']
]);
map;
// Map(1) {"name" => "Iven"}
let map = new Map();
map.set(-0, 1);
map.get(+0);
// 1
let map = new Map();
map.set(true, 1);
map.set('true', 2);
map.get(true);
// 1
let map = new Map();
map.set(undefined, 1);
map.set(null, 2);
map.get(undefined);
// 1
let map = new Map();
map.set(NaN, 1);
map.get(NaN);
// 1
2:属性和方法
- size
- set(key,value),返回新的Map
let map = new Map();
map.set(1,1).set(2,2);
//Map(2) {1 => 1,2 => 2}
- get,不存在返回undefined
- has,返回是否包含键值
- delete,返回成功与否
- clear,清空
3:Map遍历
- keys()
- values()
- entries()
- forEnch(),第二个参数绑定this
let map = new Map([
['name', 'Eric'],
['name', 'Iven']
]);
let customLog = {
info: function(key, value) {
console.log(value);
}
};
map.forEach(function(value, key, map) {
this.info(key, value);
}, customLog);
// Iven
4:WeakMap
- 只能放置对象的弱引用Map
- 其他对象不再引用该对象, 垃圾回收机制会自动回收该对象所占用的内存
- 存放DOM
- 处理私有属性
const _totalCount = new WeakMap();
class Cat {
constructor(count) {
_totalCount.set(this, count);
}
getCount() {
let count = _totalCount.get(this);
// ...
return count;
}
}
const number = 123456;
const cat = new Cat(number);
- 适合临时存放一组对象
- 无size
- 不可遍历
- get()
- set()
- delete
- has