目录
set and map 字典和地图
ES5中模拟set和map
let set = Object.create(null)
//set 用于检查某个值是否存在。map用于缓存某个值。
- 在对象内部, key值会被转化成字符型的。o[5] === o[‘5’]
let map = Object.create(null),
key1 = {},
key2 = {};
map[key1] = "foo";
console.log(map[key2]); // "foo"
- 对象类型的转成字符都是’[object Object]’,因此key1 和 key2 都指向同一个值。
ES6中的set
- set会自动去重。用set.add()添加项目。添加进去的不会被转换为字符类型。
- set 没有key
let set = new Set();
set.add(5);
set.add("5");
set.add(5);
console.log( set.size ) // 2
- set 构造器接收任意的 iterable 对象 作为参数。如 array, set 和 map。
- 用 set.has() 方法来判断是否存在这一项目。