八,字典和散列表
8.3 ES2015 Map 类
ECMAScript 2015 新增了 Map 类。
const map = new Map();
map.set('Gandalf', 'gandalf@email.com');
map.set('John', 'johnsnow@email.com');
map.set('Tyrion', 'tyrion@email.com');
console.log(map.has('Gandalf')); // true
console.log(map.size); // 3
console.log(map.keys()); // 输出{"Gandalf", "John", "Tyrion"}
console.log(map.values()); // 输出{"gandalf@email.com", "johnsnow@email.com","tyrion@email.com"}
console.log(map.get('Tyrion')); // tyrion@email.com
ES2015 的 Map 类的 values 方法和 keys 方法都返回 Iteratr.
删除 map 中的元素可以用 delete 方法。
map.delete('John');
clear 方法会重置 map 数据结构。
8.4 ES2015 WeakMap 类 和 WeakSet 类
除了 Set 和 Map 这两种新的数据结构,ES2015 还增加了它们的弱化版本,WeakSet 和 WeakMap。
基本上,Map 和 Set 与其弱化版本之间仅有的区别是:
- WeakSet 或 WeakMap 类没有 entries、keys 和 values 等方法
- 只能用对象作为键。创建和使用这两个类主要是为了性能。
WeakSet 和 WeakMap 是弱化的(用对象作为键),没有强引用的键。这使得 JavaScript 的垃圾回收器可以从中清除整个入口。
另一个优点是,必须用键才可以取出值。这些类没有 entries、keys 和 values 等迭代器方法,因此,除非你知道键,否则没有办法取出值。
const map = new WeakMap();
const ob1 = { name: 'Gandalf' };
const ob2 = { name: 'John' };
const ob3 = { name: 'Tyrion' };
map.set(ob1, 'gandalf@email.com');
map.set(ob2, 'johnsnow@email.com');
map.set(ob3, 'tyrion@email.com');
console.log(map.has(ob1)); // true
console.log(map.get(ob3)); // tyrion@email.com
map.delete(ob2);
同样的逻辑也适用于 WeakSet 类。
标签:map,set,console,log,JavaScript,第八章,数据结构,com,email From: https://www.cnblogs.com/sanhuai/p/17386273.html