美文网首页
Map 、Set&Object、Array

Map 、Set&Object、Array

作者: 维仔_411d | 来源:发表于2019-07-15 18:54 被阅读0次

1. Map和Set是什么?

2. Map和Set与Object和Array有什么区别,为何引入Map和Set?

JS中原来已经存在了数组Array和对象Object,在ES6中又引入了Map和Set。

Map和Set是什么?

1-1 Map

Map是键值对的集合

/*
** 方法 
*/
 // 创建
var mapA = new Map([["key1","value1"],["key2","value2"]]);
// add
mapA.set("key3","value3"); // 返回新的mapA
// delete
mapA.delete("key1"); // 返回删除结果,true or false,不存在该key则返回false
// get 
mapA.get("key3"); // 返回该key对应的value,不存在该key则返回undefinded
// has
mapA.has("key2"); // 返回是否包含该key,true or false,不存在该key则返回false
// others
mapA.toJSON(); // [["key2","value2"],["key3","value3"]]
// clear
mapA.clear(); // 清空mapA
// ??
mapA.entries()
mapA.keys() ; // 返回mapA所有key的Interator
mapA.values(); // 返回mapA所有value的Interator
/*
** 属性
*/
// size
console.log(mapA.size); // 返回map 中key的个数

1-2 Set

Set没有值,是key的集合,key不重复,是存储无重复值的有序列表。

 // 创建
var setA = new Set(["key1","key2"]);
// add
setA.add("key3"); // 返回新的setA
// delete
setA.delete("key1"); // 返回删除结果,true or false,不存在该key则返回
// has
setA.has("key2"); //  返回是否包含该key,true or false,不存在该key则返回false
// others
setA.toJSON(); // ["key2","key3"]
// clear
setA.clear(); // 清空setA
// ??
setA.entries()
setA.keys() ; // 返回setA所有key的Interator
/*
** 属性
*/
// size
console.log(setA.size); // 返回set 中key的个数
  1. Map和Set与Object和Array有什么区别,为何引入Map和Set?

2-1.Map和Set与Object和Array有什么区别
乍看之下,Map和Object差不多,Set和Array差不多
Map&Object
mapA、mapA.keys()、mapA.values()可以使用for of,objectA不可以;
mapA有size属性能立即得到key的个数,objA没有;
objA可以使用for in, mapA不可以

Set&Array
Set只存储key 且key不可重复;
Array 实际是key为连续数字的键值对,value可重复

2-2. 为何引入Map和Set
Map有极快的查找速度;
Set能保证key不重复(与Object.is()结果大致相同,除了+0和-0, set认为+0和-0相同)

tips: 普通for循环效率最高,forEach和for-in次之,for-of效率最低

相关文章

网友评论

      本文标题:Map 、Set&Object、Array

      本文链接:https://www.haomeiwen.com/subject/zodvvqtx.html