js中的map数据结构

您所在的位置:网站首页 es6set数据结构 js中的map数据结构

js中的map数据结构

#js中的map数据结构| 来源: 网络整理| 查看: 265

在 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], ]); 复制代码


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3