js的map数据结构
在 JavaScript 中,Map 是一种内置的数据结构,它可以存储任意类型的键和值,并且保持它们之间的关联。Map 对象是一组键值对的有序列表,其中键的范围不限于字符串,也可以是数字、布尔值、函数等其他类型。
Map 对象提供了以下方法:
- set(key, value):向 Map 对象中添加一个键值对。
- get(key):根据键获取对应的值,如果不存在该键,则返回 undefined。
- has(key):判断 Map 对象中是否存在指定键。
- delete(key):从 Map 对象中删除指定键值对。
- clear():清空 Map 对象中的所有键值对。
- size:获取 Map 对象中键值对的数量。
- keys():获取 Map 对象中所有键组成的可迭代对象。
- values():获取 Map 对象中所有值组成的可迭代对象。
- entries():获取 Map 对象中所有键值对组成的可迭代对象。
const myMap = new Map();
myMap.set("key1", "value1");
myMap.set("key2", "value2");
console.log(myMap.get("key1")); // 输出:value1
console.log(myMap.has("key2")); // 输出:true
myMap.delete("key2");
console.log(myMap.has("key2")); // 输出:false
console.log(myMap.size); // 输出:1
console.log([...myMap.keys()]); // 输出:["key1"]
console.log([...myMap.values()]); // 输出:["value1"]
console.log([...myMap.entries()]); // 输出:[["key1", "value1"]]
myMap.clear();
console.log(myMap.size); // 输出:0
需要注意的是,Map 对象中的键值对是有序的,即它们按照插入顺序排列。
进阶一下:我们也可以自己定义对象模拟这个数据结构来实现基本的功能,具体实现如下:
class MyMap {
constructor() {
this.map = {};
}
set(key, value) {
this.map[key] = value;
}
get(key) {
return this.map[key];
}
has(key) {
return this.map.hasOwnProperty(key);
}
delete(key) {
if (this.has(key)) {
delete this.map[key];
return true;
} else {
return false;
}
}
clear() {
this.map = {};
}
size() {
return Object.keys(this.map).length;
}
keys() {
return Object.keys(this.map);
}
values() {
return Object.values(this.map);
}
entries() {
return Object.entries(this.map);
}
}
在这个实现中,我们使用一个对象来存储键值对。
- set 方法将一个键值对添加到对象中,
- get 方法根据键获取值,
- has 方法判断是否存在某个键,
- delete 方法删除某个键值对,
- clear 方法清空所有键值对,
- size 方法获取键值对数量,
- keys 方法获取所有键,
- values 方法获取所有值,
- entries 方法获取所有键值对。
还需要注意的是:我们在开发中定义map数据结构时: 下面的写法会报错,报错信息如下: const map = new Map({ ^ TypeError: object is not iterable(对象不可迭代) (cannot read property Symbol(Symbol.iterator)) at new Map ()
//错误的写法
const map = new Map({
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000,
});
//正确的写法
const map = new Map([ ["I", 1],
["V", 5],
["X", 10],
["L", 50],
["C", 100],
["D", 500],
["M", 1000],
]);
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tangjefhi
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13