Javascript Map 对象/数组与map的相互转换
Map
map的主要特点在于,除了字符串之外,它还可以使用其他类型来作为键值对的键。
Map的实例化
所有实现了iterable接口的双元素数组结构都可以作为Map构造的参数。
如数组,map,set
//数组作为实例化参数
let params = ['key1', 'value1']
let map = new Map([params])
//map作为实例化参数
let map2 = new Map([['a', 1], ['b', 2]])
let map3 = new Map(map2)
console.log(map3);
//set作为实例化参数
let set = new Set([['a', 1], ['b', 2]]);
let map4 = new Map(set)
console.log(map4)
API:
基本操作
- set(key,value) 返回map实例,如果已经存在key
- get(key,value) 读取key对应的键值,如果找不到就返回undefined
- size
- has(key) 返回布尔类型,是否含有对应键
- delete(key) 删除某个键,返回布尔类型
- clear()
let map1 = new Map();
let key = 'aaa';
let obj = { "a": 1 }
//添加键值对
map1.set(key, 111)
map1.set(obj, 222)
//是否含有指定键
let bool = map1.has(key)
console.log(bool)//true
//拿到指定键对应的值
console.log(map1.get(key))//111
//删除某个键。返回布尔值
console.log(map1.delete(obj))
//清除
map1.clear()
console.log(map1)
遍历
- keys() 拿到一个迭代器对象,由键组成
- values() 由值组成的迭代器对象
- entries() 键值对数组组成的迭代器对象
- forEach() 遍历
for (let i of map1.keys()) {
console.log(i)
}
for (let i of map1.values()) {
console.log(i)
}
for (const i of map1.entries()) {
console.log(i)
}
map转数组/map转对象
//map 转数组
let m = new Map([['a1', 111], ['a2', 222]])
console.log([...m])
/*
[Array(2), Array(2)]
0: (2) ["a1", 111]
1: (2) ["a2", 222]
*/
//map转对象,只有map的键是字符串的时候才成立
let m1 = new Map()
let o = {"okey":{"vkey":"value"}}
let o1 = {}
for(let i in o){
m1.set(i,o[i])
}
for(let [k,v] of m1){
o1[k] = v
}
console.log(o1)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性