前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript 学习-14.Map 字典对象

JavaScript 学习-14.Map 字典对象

作者头像
上海-悠悠
发布2022-05-20 11:10:31
6350
发布2022-05-20 11:10:31
举报
文章被收录于专栏:从零开始学自动化测试

前言

JavaScript 中的对象(Object),实际上就是键值对的集合,但是有一个局限性,键(属性)只能是字符串,不能是数字等其他类型。 字典是一种很常见的数据类型,键值对的结构,键应该可以是数字,也可以是字符串。为了解决这个问题,ES6 提供了Map数据结构。 它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

Map 字典对象

Map 构造一个字典对象

代码语言:javascript
复制
let m = new Map();
console.log(m);   // Map(0)

初始化赋值, 可以传一个数组,数组的成员也是数组,对一个值是key,第二个值是value

代码语言:javascript
复制
let m = new Map([["user", "yo yo"], ["age", 22]]);
console.log(m);   // Map(2) {'user' => 'yo yo', 'age' => 22}

字典的key也可以是数字

代码语言:javascript
复制
let m = new Map([[1, "yo yo"], [2, "zhang san"]]);
console.log(m);   // Map(2) {1 => 'yo yo', 2 => 'zhang san'}

属性

Map的属性只有一个size, 返回键值对的总数

代码语言:javascript
复制
let m = new Map([[1, "yo yo"], [2, "zhang san"]]);
console.log(m);   // Map(2) {1 => 'yo yo', 2 => 'zhang san'}
console.log(m.size)  // 2

方法

基本的 Map() 方法

方法

功能

set(key, value)

为 Map 对象中的键设置值。

get(key)

获取 Map 对象中键的值。

has(key)

判断是否存在key对应的键,返回一个布尔值。

delete(key)

删除数据。删除成功返回 true

clear()

清除所有数据,没有返回值

entries()

返回 Map 对象中键/值对的迭代器。

keys()

返回 Map 对象中键的迭代器。

values()

返回 Map 对象中值的迭代器。

set(key, value) 添加键值对

set(key, value) 方法添加键值对

代码语言:javascript
复制
let m = new Map();
m.set('user', 'yoyo');
m.set(1, 'hello');
m.set(2, 'world');
console.log(m);  // Map(3) {'user' => 'yoyo', 1 => 'hello', 2 => 'world'}

也可以写链式方法,因为set方法返回Map 对象本身

代码语言:javascript
复制
let m = new Map();
m.set('user', 'yoyo')
 .set(1, 'hello')
 .set(2, 'world');

如果key已经存在,set会给key重新赋值

代码语言:javascript
复制
let m = new Map();
m.set('user', 'yoyo')
m.set(1, 'hello')
m.set(2, 'world');
console.log(m);  // Map(3) {'user' => 'yoyo', 1 => 'hello', 2 => 'world'}

// key 存在,重新set赋值
m.set('user', 'hello')
console.log(m); // Map(3) {'user' => 'hello', 1 => 'hello', 2 => 'world'}

get() 获取对应值

get(key) 获取 Map 对象中键的值。

代码语言:javascript
复制
let m = new Map();
m.set('user', 'yoyo');
m.set(1, 'hello');
m.set(2, 'world');
console.log(m.get('user'));  // yoyo

has(key) 判断存在

has(key) 判断是否存在key对应的键,返回一个布尔值

代码语言:javascript
复制
let m = new Map();
m.set('user', 'yoyo');
m.set(1, 'hello');
m.set(2, 'world');
console.log(m.has('user')) // true

delete(key) 删除键值对

delete(key) 删除键值对,删除成功返回true

代码语言:javascript
复制
let m = new Map();
m.set('user', 'yoyo');
m.set(1, 'hello');
m.set(2, 'world');
a = m.delete(1) ;  // 删除1 对应的数据
console.log(a);  // true
console.log(m) ;// Map(2) {'user' => 'yoyo', 2 => 'world'}

删除的可以不存在,返回false

代码语言:javascript
复制
let m = new Map();
m.set('user', 'yoyo');
m.set(1, 'hello');
m.set(2, 'world');
b = m.delete('aaa') ;  // 删除 不存在的
console.log(b);  // false

clear() 清空

clear() 清空所有的键值对,没返回值

代码语言:javascript
复制
let m = new Map();
m.set('user', 'yoyo');
m.set(1, 'hello');
m.set(2, 'world');
m.clear();
console.log(m);  // Map(0) {size: 0}

遍历方法

Map 遍历的几种方法

  • keys()     返回 Map 对象中键的迭代器。
  • values()    返回 Map 对象中值的迭代器。
  • entries()   返回 Map 对象中键/值对的迭代器。
  • forEach()     使用回调函数遍历每个成员

keys() 返回 Map 中键迭代器

返回 MapIterator

代码语言:javascript
复制
let m = new Map();
m.set('user', 'yoyo');
m.set(1, 'hello');
m.set(2, 'world');
console.log(m.keys()); // MapIterator

遍历取key

代码语言:javascript
复制
let m = new Map();
m.set('user', 'yoyo');
m.set(1, 'hello');
m.set(2, 'world');
console.log(m.keys()); // MapIterator

// for... of 遍历取key
for(let key of m.keys()){
    console.log(key); 
}

values() 返回 Map 对象中值的迭代器。

遍历取value

代码语言:javascript
复制
// for... of 遍历取value
for(let value of m.values()){
    console.log(value);
}

entries() 返回 Map 对象中键/值对的迭代器

遍历取key/value

代码语言:javascript
复制
// for... of 遍历取key, value
for(let item of m.entries()){
     console.log(item[0], item[1]);
}

解构优化

代码语言:javascript
复制
// 解构优化
for(let [key, value] of m.entries()){
     console.log(key, value);
}

forEach() 遍历

forEach() 通用的遍历方法

代码语言:javascript
复制
m.forEach(function (key, value) {
    console.log(key, value)

})

或者用箭头函数

代码语言:javascript
复制
m.forEach((key, value) => {
    console.log(key, value)

})

Map 字典 和 Array 数组相互转换

Map 字典转 Array 数组

代码语言:javascript
复制
let m = new Map();
m.set('user', 'yoyo')
m.set(1, 'hello')
m.set(2, 'world');
console.log(m);  // Map(3) {'user' => 'yoyo', 1 => 'hello', 2 => 'world'}
// map 转数组
a = Array.from(m);
console.log(a)  // Array

Array 数组转 Map 字典

代码语言:javascript
复制
// 数组转map
aa = [
    ['user', 'yoyo'],
    [1, 'hello'],
    [2, 'world']
]
let mm = new Map(aa);
console.log(mm)  // Map

Map 和 Object 对象

JavaScript 对象和 Map 之间的差异

Object 对象

Map 字典

Size

对象没有 size 属性

Maps 有 size 属性

键类型

对象键必须是字符串(或符号)

Map 键可以是任何数据类型

键顺序

对象键没有很好地排序

Map 键按插入排序

默认

对象有默认键

Map 没有默认键

2022年第 11 期《python接口web自动化+测试开发》课程,6月5号开学!

2022年第 1 期《Python 测试平台开发》课程

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Map 字典对象
  • 属性
  • 方法
    • set(key, value) 添加键值对
      • get() 获取对应值
        • has(key) 判断存在
        • delete(key) 删除键值对
          • clear() 清空
          • 遍历方法
            • keys() 返回 Map 中键迭代器
              • values() 返回 Map 对象中值的迭代器。
                • entries() 返回 Map 对象中键/值对的迭代器
                  • forEach() 遍历
                  • Map 字典 和 Array 数组相互转换
                  • Map 和 Object 对象
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档