Map和Object的区别
- map具有顺序,按照set的顺序进行的排序
- map的key值可以是任意数据类型
- map提供了更多的方法可方便使用,如forEach、size、entries、values、has
- map实现了iterator接口,可通过for of方法遍历key value
详解
1 Object对象有原型, 也就是说他有默认的key值在对象上面, 除非我们使用Object.create(null)创建一个没有原型的对象;
2 在Object对象中, 只能把String和Symbol作为key值, 但是在Map中,key值可以是任何基本类型(String, Number, Boolean, undefined, NaN….),或者对象(Map, Set, Object, Function , Symbol , null….);
3 通过Map中的size属性, 可以很方便地获取到Map长度, 要获取Object的长度, 你只能用别的方法了;
4 Map实例对象的key值可以为一个数组或者一个对象,或者一个函数,比较随意 ,而且Map对象实例中数据的排序是根据用户push的顺序进行排序的, 而Object实例中key,value的顺序就是有些规律了, (他们会先排数字开头的key值,然后才是字符串开头的key值);
5 初始化Map的用法:new Map([ [key, value] ]) 或 new Map( map )。new Map( map )的方式为浅拷贝。
Array 和 Set的区别
- Set 不可以有重复元素, 而 Array 可以有。可以通过Array.from(new Set([1, 1, 2]))快速去重
- Set 只能通过迭代器挨个取值,无法通过Array[0]的方法取值。
- Set 没有Array的Api灵活。
-
求两个数组的并集、交集、差集