当前位置:网站首页>ES6:Map
ES6:Map
2022-06-26 12:36:00 【HaanLen】
Map对象
1、Map 对象
Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。
2、Maps 和 Objects 的区别
- 一个 Object 的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值。
- Map 中的键值是有序的(FIFO 原则),而添加到对象中的键则不是。
- Map 的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算。
- Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。
3、Map 中的 key
(1)key 是字符串
var myMap=new Map();
var kk='a string';
myMap.set(kk,"for a thing");
console.log(myMap.get(kk))//for a thing
console.log(myMap.get("a string"))//for a thing
(2)key 是对象
var myMap=new Map();
var keyObj = {
}
myMap.set(keyObj,"for a thing");
console.log(myMap.get(keyObj))//for a thing
console.log(myMap.get({
}))//undefined
(3)key 是函数
var myMap=new Map();
var keyFunc=function () {
}
myMap.set(keyFunc,"for a thing");
console.log(myMap.get(keyFunc))//for a thing
console.log(myMap.get(function(){
}))//undefined
(4)key 是 NaN
var myMap=new Map();
myMap.set(NaN,"for a thing");
console.log(myMap.get(NaN))//for a thing
var otherNaN=Number("you")
console.log(myMap.get(otherNaN))//for a thing
var myMap=new Map();
myMap.set(NaN,"for a thing");
console.log(myMap.get(NaN))//for a thing
var otherNaN=Number(2,4)
console.log(myMap.get(otherNaN))//undefined
4、Map 的迭代
var myMap=new Map();
myMap.set(0,"def")
myMap.set(1,"rfg")myMap.set(3,"ppp")
for(var [index,value] of myMap){
console.log(index+"="+value)
}
var myMap=new Map();
myMap.set(0,"def")
myMap.set(1,"rfg")myMap.set(3,"ppp")
for(var [index,value] of myMap.entries()){
console.log(index+"="+value)
}
这个 entries 方法返回一个新的 Iterator 对象,它按插入顺序包含了 Map 对象中每个元素的 [index, value] 数组。
var myMap=new Map();
myMap.set(0,"def")
myMap.set(1,"rfg")
myMap.set(3,"ppp")
for (var key of myMap.keys()) {
console.log(key);
}
这个 keys 方法返回一个新的 Iterator 对象, 它按插入顺序包含了 Map 对象中每个元素的键。
var myMap=new Map();
myMap.set(0,"def")
myMap.set(1,"rfg")
myMap.set(3,"ppp")
for (var value of myMap.values()) {
console.log(value);
}
这个 values 方法返回一个新的 Iterator 对象,它按插入顺序包含了 Map 对象中每个元素的值。
var myMap=new Map();
myMap.set(0,"def")
myMap.set(1,"rfg")
myMap.set(3,"ppp")
myMap.forEach(function(value,key){
console.log(key+"="+value);
},myMap);

5、Map 对象的操作
(1)Map 与 Array的转换
var k=[["one","thr"],["two","yht"]]
var myMap=new Map(k);
var arr=Array.from(myMap)
console.log(arr)
Map 构造函数可以将一个 二维 键值对数组转换成一个 Map 对象使用 Array.from 函数可以将一个 Map 对象转换成一个二维键值对数组
(2)Map 的克隆
var myMap1 = new Map([["key1", "value1"], ["key2", "value2"]]);
var myMap2 = new Map(myMap1);
console.log(myMap2===myMap1)//false
//Map 对象构造函数生成实例,迭代出新的对象。
console.log(myMap2)

(3)Map 的合并
var first = new Map([[1, 'one'], [2, 'two'], [3, 'three'],]);
var second = new Map([[1, 'uno'], [2, 'dos']]);
// 合并两个 Map 对象时,如果有重复的键值,则后面的会覆盖前面的,对应值即 uno,dos, three
var merged = new Map([...first, ...second]);
边栏推荐
- PHP get directory size
- 2022 edition of China's medical robot industry investment status investigation and prospect dynamic analysis report
- Mysql8 master-slave replication
- Research and development practice of Kwai real-time data warehouse support system
- A must for programmers, an artifact utools that can improve your work efficiency n times
- NoSQL mongodb - 01 introduction to NoSQL and mongodb
- 不到40行代码手撸一个BlocProvider
- Vscode solves the problem of Chinese garbled code
- Redis learning - 04 persistence
- Operation analysis and investment prospect research report of China's organic chemical raw material manufacturing industry 2022-2028
猜你喜欢

Tiger Dao VC products are officially launched, a powerful supplement to seektiger ecology

关于NaN的一些总结

PHP laravel+gatewayworker completes im instant messaging and file transfer (Chapter 1: basic configuration)

JMeter response time and TPS listener tutorial

Xiaobai lazy special-win10-win11 one click installation version

nvm安装教程
![[redis series] redis learning 16. Redis Dictionary (map) and its core coding structure](/img/d2/a6cbb0abe9e04c412d1f6021430528.png)
[redis series] redis learning 16. Redis Dictionary (map) and its core coding structure

Vscode solves the problem of Chinese garbled code

Websocket and socket IO case practice

dried food! Yiwen will show you SD card, TF card and SIM card!
随机推荐
Report on in-depth analysis and investment strategy recommendations for China's petroleum coke industry (2022 Edition)
710. 黑名单中的随机数
Websocket and socket IO case practice
2022 edition of China's medical robot industry investment status investigation and prospect dynamic analysis report
2022 China smart bathroom cabinet Market Research and investment Competitiveness Analysis Report
TP5 thinkphp5 report serialization of'closure'is not allowed
Scala-day02- variables and data types
.NET MAUI 性能提升
solo 博客系统的 rss 渲染失败
由错误<note: candidate expects 1 argument, 0 provided>引发的思考
MySQL 自定义函数时:This function has none of DETERMINISTIC, NO SQL 解决方案
无人机遥感在森林监测的部分应用研究案例总结
PHP laravel+gatewayworker completes im instant messaging and file transfer functions (Chapter 2: explanation of business logic)
Which is safer and better for great wisdom to open an account
一个初级多线程服务器模型
NoSQL mongodb - 04 mongodb database and web service combination case
[solved] laravel completes the scheduled job task (delayed distribution task) [execute a user-defined task at a specified time]
7-16 货币系统Ⅰ
Fengshentai old shooting range Kali series
Ad - update the modified PCB package to the current PCB