es6+最佳入门实践(7)
7.set和map数据结构
7.1.什么是set?
Set就是集合,集合是由一组无序且唯一的项组成,在es6中新增了set这种数据结构,有点类似于数组,但是它的元素是唯一的,没有重复
let st = new Set([1,2,2,3,3,4])
console.log(st) // [1,2,3,4]
Set的size属性可以知道set中有多少元素,类似于数组的length属性
let st = new Set([1,2,2,3,3,4])
console.log(st.size); //4
7.2.Set的相关方法
1.add 添加一个数据
let st = new Set([1, 2, 3])
st.add(4)
console.log(st)
2.delete 删除一个数据
let st = new Set([1, 2, 3]);
st.delete(3);
console.log(st);
3.has 判断是否存在某个元素
let st = new Set([1, 2, 3]);
console.log(st.has(1)) //true
console.log(st.has(10)) //false
4.clear 清除所有数据
let st = new Set([1, 2, 3])
st.clear()
console.log(st)
5.keys 返回键名的遍历器
let st = new Set([1, 2, 3])
console.log(st.keys())
6.values 返回值的遍历器
let st = new Set([1, 2, 3])
console.log(st.values())
7.entries 返回键/值对的遍历器
let st = new Set([1, 2, 3])
console.log(st.entries().next())
8.foreach 使用回调函数遍历元素
let st = new Set([0, 12, 3])
st.forEach((v,k,s)=>{
console.log(v, k, s)
})
7.3.什么是Map?
ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。
let k1 = {a:1};
let k2 = {b:1};
let obj = {
[k1]: 1,
[k2]: 2
};
console.log(obj) //{[object Object]: 2}
上面代码中k1和k2都被转换成了[object Object],因此,k2 把 k1覆盖了,之所以要把k1和k2转换成字符串的原因就是js中的对象属性只能是字符串类型,为了解决这个问题,ES6提供了Map数据结构
1.如何创建一个Map?
let mp = new Map([
['a', 1],
['b', 2]
])
console.log(mp)
let mp2 = new Map([
[k1,1],
[k2,2]
])
console.log(mp2)
2.Map的属性size
let mp2 = new Map([
[k1,1],
[k2,2]
])
console.log(mp2.size)
7.4.Map的相关方法
1.set(key, value) 添加新的键值对
let m = new Map()
m.set('a', 1)
console.log(m)
2.get(key) 获取key对应的值
let m = new Map()
m.set('a', 1)
console.log(m.get('a'))
3.delete(key) 删除key
let m = new Map([
['a', 1],
['b', 2]
]);
m.delete('a')
console.log(m)
4.has(key) 查看是否存在某个key
let m = new Map([
['a', 1],
['b', 2]
]);
console.log(m.has('a')) //true
console.log(m.has('c')) //false
5.clear()
let m = new Map([
['a', 1],
['b', 2]
]);
m.clear()
console.log(m)
6.keys()返回键名的遍历器
let m = new Map([
['a', 'hello'],
['b', 'nodeing']
]);
for(let k of m.keys()){
console.log(k)
}
7.values()返回值的遍历器
let m = new Map([
['a', 'hello'],
['b', 'nodeing']
]);
for(let k of m.values()){
console.log(k)
}
8.entries() 返回键/值对的遍历器
let m = new Map([
['a', 'hello'],
['b', 'nodeing']
]);
for(let k of m.entries()){
console.log(k)
}
9.foreach 遍历Map
let m = new Map([
['a', 'hello'],
['b', 'nodeing']
]);
m.forEach((v,k,m) => {
console.log(v, k, m)
})
视频教程地址:http://edu.nodeing.com/course/50
es6+最佳入门实践(7)的更多相关文章
- es6+最佳入门实践(14)
14.模版字符串 模版字符串(template string)是增强版的字符串,定义一个模版字符串需要用到反引号 let s = `这是一个模版字符串` console.log(s) 14.1.模版字 ...
- es6+最佳入门实践(12)
12.class基础用法和继承 12.1.class基础语法 在es5中,面向对象我们通常写成这样 function Person(name,age) { this.name = name; this ...
- es6+最佳入门实践(10)
10.Generator 10.1.Generator是什么? Generator函数是ES6提供的一种异步编程解决方案.在它的内部封装了多个状态,因此,又可以理解为一种状态机,执行Generator ...
- es6+最佳入门实践(9)
9.Iterator和for...of 9.1.Iterator是什么? Iterator又叫做迭代器,它是一种接口,为各种不同的数据结构提供统一的访问机制.这里说的接口可以形象的理解为USB接口,有 ...
- es6+最佳入门实践(8)
8.Promise 8.1.什么是异步? 要理解异步,首先,从同步代码开始说 alert(1) alert(2) 像上面的代码,执行顺序是从上到下,先后弹出1和2,这种代码叫做同步代码 alert(0 ...
- es6+最佳入门实践(6)
6.Symbol用法 6.1.什么是Symbol? Symbol是es6中一种新增加的数据类型,它表示独一无二的值.es5中我们把数据类型分为基本数据类型(字符串.数字.布尔.undefined.nu ...
- es6+最佳入门实践(5)
5.对象扩展 5.1.对象简写 在es5中,有这样一种写法 var name = "xiaoqiang"; var age = 12; var obj = { name : nam ...
- es6+最佳入门实践(4)
4.函数扩展 4.1.参数默认值 默认参数就是当用户没有传值的时候函数内部默认使用的值,在es5中我们通过逻辑运算符||来实现 function Fn(a, b) { b = b || "n ...
- es6+最佳入门实践(3)
3.数组扩展 3.1.扩展运算符 扩展运算符用三个点(...)表示,从字面上理解,它的功能就是把数组扩展开来,具体形式如下: let arr = [1, 2, 3]; console.log(...a ...
随机推荐
- Verilog 初级入门概念
首先我们要理解两种变量类型 Net Type(连线型)和 Register Type (寄存器型): Net Type(连线型),从名字上理解就是“导线”呗,导线的这头和导线的另一头始终是直接连通的, ...
- stm32--FatFs调试过程(SPIFlash)
移植方法参见我的另一篇博客:<stm32--FatFs移植(SPIFlash)>. 本文仅记录在初次移植完成后,遇到的问题,和解决的过程. 调试记录: 问题1:f_open返回3,即磁盘没 ...
- 利尔达NB-IOT模块对接移动onenet平台步骤
1. 首先登陆浙江移动onenet网站,http://openiot.zj.chinamobile.com/,进入右上角的开发者中心,然后才能看到创建产品 2. 填写产品的信息,其他信息按照个人实际填 ...
- SSM框架学习思维导图
SSM框架学习思维导图 2017年08月11日 20:17:28 阅读数:1141 放上前段时间学习SSM框架以及Spring.SpringMVC.MyBatis的学习结果,输出思维导图一共四幅图.这 ...
- MinGW安装图文教程以及如何配置C语音编程环境
MinGW安装图文教程以及如何配置C语音编程环境 转载自:http://www.jb51.net/softjc/192017.html MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序 ...
- jmeter之HTTP请求
1.添加一个线程组:Test plan_添加_Threads(users)_线程组(右键操作),如下图: 2.添加一个HTTP请求:线程组_添加_sample_HTTP请求(右键操作),如下图: 3. ...
- Jmeter从文件中读取参数值
1. 通过函数助手,从本地文件中取值选项->函数助手对话框->选择__CSVRead函数->调用参数其中,函数助手对话框中,第一栏填写本地文件所在地址,第二栏写需要入参的值,有点类似 ...
- linux学习总结-----web前端①
<html> <head> <title></title> <meta charset='utf-8'/> ... </head> ...
- 九度OJ--Q1164
import java.util.Scanner; /* * 题目描述: * 任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0.90.180.270),如果不是 ...
- mysql insert into select 语法
Insert into Table2(field1,field2,...) select value1,value2,... from Table1 这样就对了