ES6——Set和Map

Map和Set很相似;

1,Map对象,存储键值对;跟Object对象的区别;以及Map的使用(Map或者Map实例有哪些方法或属性?)

Map相对Object:Map是有序的,会按添加的顺序输出,Object无序(ES2015之后,字符串的键会按大小排序);Map的键可以是任意值,Object的只能是字符串或Symbol或数字;Map对象有个size属性以获取map对象的条数,Object对象不能直接获取属性个数需要手动计算;Map对象的键值对不会与原型对象的冲突,因为Map对象的键值对是存储在一个[[Entries]]属性中而不是直接在对象上,所以Map对象的操作也是作用在[[entries]],通过set添加的键值对不能用属性访问的方式获得,Object对象的键值对可能与原型链的冲突(ES5,Object.create(null)可以创建一个没有原型的对象{});据说Map的添加删除的性能比Object的要高效;Map和Object都可以以NaN作为键,而且认为所有NaN都是相等的,虽然在JS中,NaN!==NaN;

//Map的使用----------------
//Map必须当作构造函数被调用,即使用new操作符 ------------
// Map();
// //Uncaught TypeError: Constructor Map requires 'new'
//Map的创建,可以传入Map构造函数的有哪些类型, ----------
//var map1 = new Map();
// var map2 = new Map('string');
// //Uncaught TypeError: Iterator value s is not an entry object
//  var map3 = new Map({e: 'e'});
// //Uncaught TypeError: object is not iterable (cannot read 
//property Symbol(Symbol.iterator))
//  var map4 = new Map([4, 6]);
//  //Script snippet %234:9 Uncaught TypeError: Iterator value 4 is not an entry object
// var map5 = new Map(4);
// //Uncaught TypeError: number 4 is not iterable (cannot read 
//property Symbol(Symbol.iterator))
//由此可见可以传入Map构造函数的是个entry对象,可以是个Map对象, --------------------
//也可以是Set对象,还可以是二维数组
var map = new Map();
map.set('test', {test: 'test'});
map.set('ha', 'haha');
var anotherMap = new Map(map);//相当于shadow copy map的键值对
console.log(anotherMap);
//
//Map实例的方法和属性,很多是原型上的方法 --------------------
//map.set(key, value):添加或修改已有条目,返回实例本身;
anotherMap.set('dage', 'dage'); //此时 anotherMap.size=
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: ES6中的SetMap是两种新增的集合类型。Set是一种无重复值的集合,可以通过new Set()来创建。它具有add方法用于向集合中添加元素,has方法用于判断集合中是否存在某个元素,clear方法用于清空集合。Set也可以用于数组去重,通过new Set(\[...\])的方式将数组转换为Set,利用Set的特性去除重复值。\[1\] Map是一种键值对的集合,可以通过new Map()来创建。它具有set方法用于向集合中添加键值对,get方法用于获取指定键名对应的值,has方法用于判断集合中是否存在某个键名,clear方法用于清空集合。Map的键名可以是任意数据类型,包括引用值,但需要注意的是,引用值作为键名时,需要使用相同的引用地址才能获取到对应的值。\[2\] SetMap都可以使用for...of循环或forEach方法进行遍历。在Set中,forEach的第二个参数是集合的元素,因为Set中不存在下标。而在Map中,forEach的第一个参数是键值对的值,第二个参数是键值对的键名。\[3\] 总结来说,SetMapES6中新增的集合类型,Set用于存储无重复值的集合,Map用于存储键值对的集合。它们提供了一些方法来操作集合,如添加、获取、判断是否存在等。在使用时需要注意它们的特性和方法的使用方式。 #### 引用[.reference_title] - *1* *2* [ES6中的MapSet详解](https://blog.csdn.net/m0_45093055/article/details/126430467)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ES6中的setmap](https://blog.csdn.net/weixin_44247866/article/details/127561391)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值