日常学习笔记 - ES6中的Map类型

一、理解

ES6中新添加的数据类型,本质和Object一样,都是哈希结构的键值对集合。Map数据类型是对Object的补充,传统Object键名只能是字符串,而Map的键名不限于字符串。

二、创建Map实例

使用内置对象Map(构造函数),通过new字符进行实例化。Map函数可以接受一个数组为参数,该数组的每个元素为表示键值对的数组。

let map1 = new Map();						// {size:0}
let map2 = new Map([['name','jack']]);		// {'name' => 'jack'}
let map3 = new Map([['name','jack'],[{age:18},'bella']]);		// {'name' => 'jack', {age:18} => 'bella'}

三、Map数据类型提供的属性和方法

1.size 返回该实例存储的键值对数,类似数组的length

map1.size;								// 0
map2.size;								// 1
map3.size;								// 2

2.操作方法

1)set(key,value) 设置键名key及对应键值value,返回实例本身

若设置的键名已经存在于该实例,将覆盖原本的键值。

let map = new Map();						// {size:0}

map.set('name','jack');						// {'name' => 'jack'}
map.set('age',18);							// {'name' => 'jack', 'age' => 18}
map.set('name','张三');						// {'name' => '张三', 'age' => 18}

2)get(key) 通过键名key查询对应键值,返回键值,若键名不存在则返回undefined
let map = new Map();						// {size:0}

map.set('name','jack').set('age',18);		// {'name' => 'jack', 'age' => 18}
map.get('name');							// '张三'
map.get('age');								// 18
map.get('sex');								// undefined

3)has(key) 判断实例中是否存在键名为key的元素,存在则返回true,否则返回false
let map = new Map();						// {size:0}

map.set('name','jack').set('age',18);		// {'name' => 'jack', 'age' => 18}
map.has('name');							// true
map.has('age');								// true
map.has('sex');								// false

4)delete(key) 删除实例中键名为key的元素,成功返回true,否则返回false
let map = new Map();						// {size:0}

map.set('name','jack').set('age',18);		// {'name' => 'jack', 'age' => 18}
map.delete('name');							// true
map.delete('sex');							// false
map;										// {'age' => 18}

5)clear() 清空所有元素,无返回值
let map = new Map();						// {size:0}

map.set('name','jack').set('age',18);		// {'name' => 'jack', 'age' => 18}
map.clear();								// undefined
map;										// {size:0}

3.遍历方法

1.keys() 返回键名
let map = new Map([['name','jack'],['age',18]]);		// {'name' => 'jack', 'age' => 18}

[...map.keys()];										// ['name','age']

2.values() 返回键值
let map = new Map([['name','jack'],['age',18]]);		// {'name' => 'jack', 'age' => 18}

[...map.values()];										// ['jack',18]

3.entries() 返回键值对
let map = new Map([['name','jack'],['age',18]]);		// {'name' => 'jack', 'age' => 18}

[...map.entries()];										// [['name','jack'],['age',18]]

4.forEach() 遍历Map实例,用法和arr.forEach相同
let map = new Map([['name','jack'],['age',18]]);		// {'name' => 'jack', 'age' => 18}

map.forEach((value,key) => {
	console.log(value,key)								// 'jack' 'name'    18 'age'
})

1.Map类型具备有序性,遍历的顺序即元素的插入顺序。
2.Map类型同样可以使用for of、for in进行遍历。


四、数组、对象和Map实例的互相转换

1.数组转为Map

let arr = [['name','张三'],['info',{height:175, sex:'男' }]];

let map = new Map(arr);					// {'name' => '张三','info' => {height:175, sex:'男'}}

2.对象转为Map

let obj = {name:'张三', sex:'男'};

let map = new Map();
for(let key in obj) {
	map.set(key,obj[key]);
} 

3.Map转为数组

1.直接使用扩展运算符
2.使用Array.from函数

let map = new Map([['name','张三'],['info',{height:175, sex:'男' }]]);

let arr1 = [...map];						// [['name','张三'],['info',{height:175, sex:'男' }]
let arr2 = Array.form(map);					// [['name','张三'],['info',{height:175, sex:'男' }]
// 两种方式的值相同

4.Map转为对象

如果Map的键名都为字符串,则可以直接通过循环给对象添加键值对;若键名存在非字符串类型,则需要先将键名转化为字符串。

let map = new Map([['name','张三'],[{name:'jack'},{height:175, sex:'男' }]]);

let obj = {};
map.forEach((item, key) => {
    if(typeof key != 'string'){
        key = JSON.stringify(key);
    }
    obj[key] = item;
});
obj;								// {'name': '张三', "{'name':'jack'}": {'height':175, 'sex':'男'}}
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: cesium-popup-es6是一个基于ES6语法编写的Cesium.js的弹窗组件,用于在Cesium地图上显示自定义的弹窗内容。 这个组件主要包含了以下几个部分: 1. Popup类:这是弹窗的主要类,负责创建和管理弹窗的各种属性和方法。通过使用Popup类,可以很方便地在地图上创建弹窗,并设置弹窗的位置、大小、内容等。 2. 事件监听:cesium-popup-es6还提供了一些事件监听的方法,可以在弹窗的打开、关闭以及其他交互操作时进行相应的处理。例如,可以监听鼠标点击事件来关闭弹窗,或者监听地图的移动事件来更新弹窗的位置。 3. 样式定制:该组件允许用户通过设置自定义的CSS样式来定制弹窗的外观和风格。这使得用户可以根据自己的需要来修改弹窗的颜色、字体、边框等样式属性,从而实现个性化的弹窗显示效果。 4. 兼容性:cesium-popup-es6能够很好地与Cesium.js的其他功能和插件进行集成,同时对不同的浏览器和设备也具备良好的兼容性。这意味着无论是在PC端还是移动端,无论是在Chrome还是在Safari等浏览器上,cesium-popup-es6都能够正常运行。 总的来说,cesium-popup-es6文档提供了关于如何使用和定制这个弹窗组件的详细说明,方便开发者在Cesium.js地图项目加入自定义的弹窗功能。无论是展示地理信息、交互操作还是其他相关需求,cesium-popup-es6都能够帮助开发者实现一个易于使用和美观的弹窗效果。 ### 回答2: cesium-popup-es6 是一个基于 Cesium.js 的弹出窗口组件,该组件使用 ES6 编写。它为用户提供了在 Cesium 场景高度可定制的弹出窗口功能。 组件的文档详细介绍了 cesium-popup-es6 的使用方法和各个配置项的说明。首先,你需要通过 npm 或者其他构建工具下载并引入该组件。然后,在你的代码创建一个 Popup 实例并传入相应的参数,包括弹出窗口的内容、位置、大小、样式等。 文档还介绍了组件的主要功能,包括弹出窗口显示和隐藏的方法,以及与 Cesium 场景的交互。你可以通过调用 show 方法来显示弹出窗口,通过调用 hide 方法来隐藏弹出窗口。组件还提供了许多配置项,例如你可以自定义弹出窗口的样式、位置以及与其它元素的交互等。 文档也提供了丰富的示例代码,以帮助用户更好地理解和使用 cesium-popup-es6 组件。这些示例代码覆盖了各种场景,包括在固定位置显示弹出窗口、在鼠标点击位置显示弹出窗口等。 总的来说,cesium-popup-es6 文档提供了详细的使用说明和示例代码,帮助用户了解和使用该弹出窗口组件。用户可以根据自己的需求进行定制,实现丰富多样的弹出窗口效果。 ### 回答3: cesium-popup-es6 是一个基于ES6语法的Cesium.js库的文档。 该文档主要用于指导开发者在使用cesium-popup-es6库时的操作步骤和相关功能的使用方法。 文档的目录结构清晰明了,按照功能模块进行分类,方便开发者快速找到需要的信息。 在文档的开头部分,首先介绍了cesium-popup-es6的基本概述,包括其功能特点和适用场景,帮助开发者了解该库的作用和优势。 接下来,文档详细介绍了cesium-popup-es6的安装和配置步骤。通过简明的指导,开发者可以快速将该库引入到自己的项目,并进行相应的配置。 然后,文档详细说明了cesium-popup-es6库的各种功能和使用方法。比如,如何创建和定位弹出窗口、如何设置窗口内容和样式、如何捕获窗口的事件等等。每一项功能都给出了具体的代码示例和详细的说明,方便开发者理解和应用。 文档还提供了一些常见问题的解答和一些建议的最佳实践,帮助开发者在使用cesium-popup-es6库时避免一些常见的问题和错误。 最后,文档附带了一些附录,包括cesium-popup-es6的API参考和一些相关的资源链接,方便开发者查阅进一步的信息和深入理解该库。 总之,cesium-popup-es6 文档是一份详尽而全面的文档,对于开发者学习和使用cesium-popup-es6库非常有帮助,可以提高开发效率并简化开发过程。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值