Map
map对象与Object的区别:
- 对象的 key 只能是 字符串或者symbol(原始数据类型),map的 key 可以是任何数据类型 包含对象与symbol类型
- map中的键值对是有序的(先进先出),对象中的键值对是无序的
- map中的键值对个数可以用 map.size;获取,但是在object中 只能够 人工手数
- 对象都有自己的原型,原型链上的链名有可能和自己在对象上的属性名发生冲突
map set区别:
1.Map是键值对,Set是值的集合,当然键和值可以是任何的值;
2.Map可以通过get方法获取值,而set不能因为它只有值;
3.都能通过迭代器进行for...of遍历;
4.Set的值是唯一的可以做数组去重,Map由于没有格式限制,可以做数据存储
5.map和set都是stl中的关联容器,map以键值对的形式存储,key=value组成pair,是一组映射关系。set只有值,可以认为只有一个数据,并且set中元素不可以重复且自动排序。
map,set详解原文地址
map 对象的操作:
| set对象的操作:
|
| |
set 集合特点:
- 允许存储任意类型的唯一会,无论原始数据类型还是对象
- set 是集合,可以按插入的顺序迭代元素,每个元素只出现一次,即元素唯一
- NaN 和 undefined 都可以被存储在set 集合中,NaN 之间被视为相同的值
set 、map 迭代 方式:
- for (item of set){ }
- forEach(item index,arr) { }
- map用 forEach 迭代,ele,代表值,index,代表key
- set的ele 和 index 相同,均为值
// map 对象
let map = new Map();
map.set(12, 123);
map.set(5, 55);
map.set(15, 55);
map.set(51, 55);
console.log(map.keys());
console.log(map.values());
console.log(map.entries());
// set 对象
let set = new Set();
set.add(11);
set.add(5);
set.add(15);
set.add(51);
console.log(set.keys());
console.log(set.values());
console.log(set.entries());
set.clear()
console.log(set);
注意: 在 map 中所有的 key 唯一,同名key被覆盖
注意:在map 、set 中 NaN 视为相同的值,尽管NaN === NaN 为false