es6数据结构Map键值对
admin
2024-05-23 21:11:32

文章目录

    • Map基本用法
    • Map遍历
    • Map和Object的区别
    • Map方法

Objects 和 Maps 类似的是,它们都允许你按键存取一个值、删除键、检测一个键是否绑定了值。因此(并且也没有其他内建的替代方式了)过去我们一直都把对象当成 Maps 使用。不过 Maps 和 Objects 有一些重要的区别。

JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。

Map基本用法

const map = new Map();map.set(1, 'aaa')
map.get(1) // "aaa"

如果 Map 的键是一个简单类型的值(数字、字符串、布尔值),则只要两个值严格相等,Map 将其视为一个键

let map = new Map();map.set(-0, 123);
map.get(+0) // 123map.set(true, 1);
map.set('true', 2);
map.get(true) // 1map.set(undefined, 3);
map.set(null, 4);
map.get(undefined) // 3map.set(NaN, 123);
map.get(NaN) // 123

Map遍历

const map = new Map([['F', 'no'],['T',  'yes'],
]);for (let key of map.keys()) {console.log(key);
}
// "F"
// "T"for (let value of map.values()) {console.log(value);
}
// "no"
// "yes"for (let item of map.entries()) {console.log(item[0], item[1]);
}

Map和Object的区别

  1. 一个Object的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值,包括函数、对象、基本类型。

  2. Map 中的键值是有序的,而添加到对象中的键则不是。因此,当对它进行遍历时,Map 对象是按插入的顺序返回键值。

  3. 你可以通过 size 属性直接获取一个 Map 的键值对个数,而 Object 的键值对个数只能手动计算。

  4. Map 可直接进行迭代,而 Object 的迭代需要先获取它的键数组,然后再进行迭代。

  5. Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。虽然 ES5 开始可以用 map = Object.create(null) 来创建一个没有原型的对象,但是这种用法不太常见。

  6. Map 在涉及频繁增删键值对的场景下会有些性能优势。

Map方法

方法名作用
Map.prototype.clear()删除所有键/值对来自Map对象
Map.prototype.delete(key)删除与该键关联的任何值,并返回Map.prototype.has(key)之前返回的值
Map.prototype.has(key)之后将返回true或false
Map.prototype.entries()返回一个新的Iterator对象,该对象包含一个 [key,value]数组,用于Map对象中的每个元素插入顺序
Map.prototype.forEach(callbackFn [,thisArg])按插入顺序为Map对象中的每个键值对调用 callbackFn 一次.如果向forEach提供thisArg参数,它将被用作每个回调的this值
Map.prototype.keys()按插入顺序返回一个新的Iterator对象,该对象包含Map对象中每个元素的键
Map.prototype.values()以插入顺序返回一个新的Iterator对象,该对象包含 [key,value]数组,用于Map对象中的每个元素

相关内容

热门资讯

奥地利小镇邂逅农民思想家多伊布... 旅游奥地利期间,每天与同行的徐静波教授晨起一同散步,有时沿着多瑙河,有时在维也纳的森林间,但给我印象...
读懂济南|从“一阵风”到“长红... 齐鲁晚报·齐鲁壹点 王贝艺大明湖畔的狂欢还未收尾,五龙潭的泼水狂欢又已开场;广智里的咖啡香还没散尽,...
黄河壶口瀑布水量大增 形成壮美...   9月9日,受降雨天气影响,位于晋陕峡谷的黄河壶口瀑布水量大增,主副瀑布连成一片,形成壮美瀑布群景...
“请3休13”点燃中秋国庆国内... 财联社9月10日讯(记者 胡皓琼)中秋前一日火车票开售,中秋国庆国内游预订提速。财联社记者从OTA平...
微言|游客暴增却带不来利润?“... 中秋、国庆假期将至,很多地方将迎来旅游旺季。然而,一些地方旅游人次创新高,民宿经营者却普遍反映利润摊...