ES6基础语法之Map和Set对象
一、Map对象
Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。
Map中的键值是有序的。
let myMap = new Map(); myMap.set("23","乔丹"); myMap.set("33","皮蓬"); let name = myMap.get("33"); console.log(name); //皮蓬 let has = myMap.has("24"); //查找是否含有此键 console.log(has); //false
Map的迭代:
let myMap = new Map(); myMap.set("23","乔丹"); myMap.set("33","皮蓬"); myMap.set("99","罗德曼"); //循环键 for (let key of myMap.keys()) { console.log(key); } //循环值 for (let value of myMap.values()) { console.log(value); } //循环键和值 for (let [key, value] of myMap) { console.log(key + " = " + value); } //或 for (let [key, value] of myMap.entries()) { console.log(key + " = " + value); } //使用forEach循环 myMap.forEach(function(value,key){ console.log(key + "=" + value); },myMap);
Map 与 Array的转换:
//二维数组转换成map对象 let arr = [[23,"乔丹"],[33,"皮蓬"],[99,"罗德曼"]]; let myMap = new Map(arr); for (let [key, value] of myMap) { console.log(key + " = " + value); } //map对象转换成二维数组 let outArr = Array.from(myMap); console.log(outArr);
Map的克隆:
let myMap1 = new Map([[23,"乔丹"],[33,"皮蓬"],[99,"罗德曼"]]); let myMap2 = new Map(myMap1); for (let [key, value] of myMap2) { console.log(key + " = " + value); }
Map的合并(合并两个 Map 对象时,如果有重复的键值,则后面的会覆盖前面的)
let myMap1 = new Map([[23,"乔丹"],[33,"皮蓬"],[99,"罗德曼"]]); let myMap2 = new Map([[23,"詹姆斯"],[24,"科比"],[11,"姚明"]]); let myMap = new Map([...myMap1,...myMap2]); //合并之后詹姆斯会替换乔丹 for (let [key, value] of myMap) { console.log(key + " = " + value); }
二、Set对象
Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
Set 对象存储的值总是唯一的,所以需要判断两个值是否恒等。有几个特殊值需要特殊对待:
(1) +0 与 -0 在存储判断唯一性的时候是恒等的,所以不重复;
(2) undefined 与 undefined 是恒等的,所以不重复;
(3) NaN 与 NaN 是不恒等的,但是在 Set 中只能存一个,不重复。
let mySet = new Set(); mySet.add(1); mySet.add("hello"); //这里体现了类型的多样性 mySet.add(2); mySet.add(1); //这里添加不了,这里体现了值的唯一性 console.log(mySet); //{1,"hello",2} console.log(mySet.has(3)); //false, 是否含有3
以下代码体现了对象之间引用不同不恒等,即使值相同,Set 也能存储
let mySet = new Set(); let o = {a: 1, b: 2}; mySet.add(o); mySet.add({a: 1, b: 2}); console.log(mySet);
Set类型转换:
//Array 转 Set let arr = ["乔丹","皮蓬","罗德曼"]; let mySet = new Set(arr); console.log(mySet); //Set转Array(使用...) let mySet = new Set(); mySet.add("乔丹"); mySet.add("皮蓬"); mySet.add("罗德曼"); let arr = [...mySet]; console.log(arr); //字符串转Set(注:Set中toString方法是不能将Set转换成String) let mySet = new Set("hello"); console.log(mySet); //h e l o (两个l只出现一次)
Set对象的作用:
//数组去重复 let mySet = new Set([1,2,1,2,3,3,4,5,6,4,7]); let arr = [...mySet]; console.log(arr); //1,2,3,4,5,6,7 //数组求并集 let a = new Set([1, 2, 3]); let b = new Set([4, 3, 2]); let union = new Set([...a, ...b]); let arr = [...union]; console.log(arr); //1, 2, 3, 4 //数组求交集 let a = new Set([1, 2, 3]); let b = new Set([4, 3, 2]); let intersect = new Set([...a].filter(p=>b.has(p))); let arr = [...intersect]; console.log(arr); //2, 3
到此这篇关于ES6基础语法之Map和Set对象的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持猪先飞。
原文出处:https://www.cnblogs.com/wml-it/p/15967783.html
相关文章
Java8 实现stream将对象集合list中抽取属性集合转化为map或list
这篇文章主要介绍了Java8 实现stream将对象集合list中抽取属性集合转化为map或list的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-05- 这篇文章主要介绍了java8如何用Stream查List对象某属性是否有重复的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-11
- 这篇文章主要介绍了R语言删除指定变量或对象的操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
如何在Spring WebFlux的任何地方获取Request对象
这篇文章主要介绍了如何在Spring WebFlux的任何地方获取Request对象,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下...2021-01-26- 本篇文章是对C#中的get与set进行了详细的分析介绍,需要的朋友参考下...2020-06-25
- 这篇文章主要介绍了JavaScript预解析,对象的的相关资料,小编觉得这篇文章写的还不错,需要的朋友可以参考下,希望能够给你带来帮助...2021-11-10
牛叉的Jquery――Jquery与DOM对象的互相转换及DOM的三种操作
只有jQuery对象才能调用jQuery类库的各种函数,同样有些dom对象的属性和方法在jQuery上也是无法调用的,不过基本上jQuery类库提供的函数包含了所有的dom操作。这就需要我们知道如何将jQuery对象和DOM的相互转换的方法。1...2015-10-30- 这篇文章主要介绍了C++ bitset用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
- js调试中经常会碰到输出的内容是对象而无法打印的时候,光靠alert只能打印出object标示,却不能打印出来里面的内容,甚是不方便,于是各方面整理总结了如下一个函数,能够将数组或者对象这类的结果一一打印出来,具体代码如下: fu...2015-10-21
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
下面小编就为大家带来一篇JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-05-20- map容器是C++ STL中的重要一员,删除map容器中value为指定元素的问题是我们经常与遇到的一个问题,下面这篇文章主要给大家介绍了关于利用C++如何删除map容器中指定值的元素的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。...2020-04-25
- 这篇文章主要介绍了JavaScript WeakMap使用的详细介绍,帮助大家更好的理解和使用JavaScript,感兴趣的朋友可以了解下...2021-02-06
- 这篇文章主要介绍了详解ES6实现类的私有变量的几种写法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-10
- 这篇文章主要介绍了解决idea中@Data标签getset不起作用的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-23
- 这篇文章主要介绍了javascript self对象使用详解的相关资料,需要的朋友可以参考下...2016-10-20
C#从数据库读取数据到DataSet并保存到xml文件的方法
这篇文章主要介绍了C#从数据库读取数据到DataSet并保存到xml文件的方法,涉及C#操作DataSet保存到XML文件的技巧,需要的朋友可以参考下...2020-06-25java中JSONObject转换为HashMap(方法+main方法调用实例)
这篇文章主要介绍了java中JSONObject转换为HashMap(方法+main方法调用实例),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-14- 本文给大家介绍如何替换json对象中的key,通过实例代码给大家介绍key的替换方法,代码也很简单,需要的朋友参考下吧...2021-06-02
- 这篇文章主要介绍了解决jmap命令打印JVM堆信息异常的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-04
- 这篇文章主要给大家介绍了ES5和ES6中类的区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-21