[ES6-重点纪录] Map 物件

这是 ES6 中一种新的资料结构,每组资料都有对应的 key 值与 value 值,所以 Map 在意义上类似于物件。

而 key 值的範围不限于字串,可以是各种类型的值(包括 number、array、object、function、symbol...等等)都可以当作 key,是一种更完善的 Hash 结构实现。

// Map 基本使用let map = new Map();// 可以使用 set() 方法设置资料内容map.set('first', 1);map.set(10, 'ten');map.set({sayHi: 'Hi'}, 'obj');console.log(map);  // Map(3) {"first" => 1, 10 => "ten", {…} => "obj"}

内部为 [key, value] 的资料结构

使用new产生 Map 物件在产生 Map 时也可以接收以下的参数有着迭代协议的物件结构阵列集合,类似 -- [['key1', 'value1'], ['key2', 'value2']]搭配for..of迭代循环可单独取得所有的[key, value]可以使用...扩展运算子取得阵列集合
let map1 = new Map();// 放置阵列集合let map2 = new Map([    ['first', 1],    [10, 'ten'],    [{sayHi: 'Hi'}, 'obj']]);// 搭配 for...of 循环取得[key, value]for (let [key, value] of map2) {    // ...}// 搭配扩展运算子取得阵列集合console.log([...map1]);    // []console.log([...map2]);// [//    ['first', 1],//    [10, 'ten'],//    [{sayHi: 'Hi'}, 'obj']// ]

Map 的操作方法

set(key, value): 设置内容get(key): 获取指定 key 的内容,若找不到返回undefinedhas(key): 检查是否存在此 key,有则返回ture,无则返回falsedelete(key): 删除指定 key 的内容,成功返回ture,失败返回falseclear(): 删除所有内容成员size 属性: 取得内容成员总数
let map = new Map();map.set('first', 1);map.set(10, 'ten');map.set({sayHi: 'Hi'}, 'obj');map.set(() => 'key', 123);map.set(Symbol('items'), [1, 2]);map.get(10)    // 'ten'map.has('first')    // 'ture'map.delete('first') map.get('first')    // undefinedmap.size    // 4map.clear()map.size    // 0

Map 的迭代方法

这些方法函数所产生的内容都是 "迭代器(iterator)的资料类型",可以使用for...of迴圈取得个别单独的值,也能使用...扩展运算符直接转成阵列类型。

keys(): 取得所有 keyvalues(): 取得所有成员的值entries(): 取得所有内容成员forEach(): 走访 Map 的所有成员
let map = new Map([    [1, 'one'],     [2, 'two']]);for (let key of map.keys()) {    console.log(key);}// 1// 2for (let value of map.values()) {    console.log(value);}// 'one'// 'two'for (let [key, value] of map.entries()) {    console.log(key, value);}// 1 'one'// 2 'two'// 等同于for (let [key, value] of map) {    console.log(key, value);}// 也能使用...扩展运算子直接转成阵列类型console.log([...map.keys()]);  // [1, 2]console.log([...map.values()]);  // ['one', 'two']

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章