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)的更多相关文章

  1. es6+最佳入门实践(14)

    14.模版字符串 模版字符串(template string)是增强版的字符串,定义一个模版字符串需要用到反引号 let s = `这是一个模版字符串` console.log(s) 14.1.模版字 ...

  2. es6+最佳入门实践(12)

    12.class基础用法和继承 12.1.class基础语法 在es5中,面向对象我们通常写成这样 function Person(name,age) { this.name = name; this ...

  3. es6+最佳入门实践(10)

    10.Generator 10.1.Generator是什么? Generator函数是ES6提供的一种异步编程解决方案.在它的内部封装了多个状态,因此,又可以理解为一种状态机,执行Generator ...

  4. es6+最佳入门实践(9)

    9.Iterator和for...of 9.1.Iterator是什么? Iterator又叫做迭代器,它是一种接口,为各种不同的数据结构提供统一的访问机制.这里说的接口可以形象的理解为USB接口,有 ...

  5. es6+最佳入门实践(8)

    8.Promise 8.1.什么是异步? 要理解异步,首先,从同步代码开始说 alert(1) alert(2) 像上面的代码,执行顺序是从上到下,先后弹出1和2,这种代码叫做同步代码 alert(0 ...

  6. es6+最佳入门实践(6)

    6.Symbol用法 6.1.什么是Symbol? Symbol是es6中一种新增加的数据类型,它表示独一无二的值.es5中我们把数据类型分为基本数据类型(字符串.数字.布尔.undefined.nu ...

  7. es6+最佳入门实践(5)

    5.对象扩展 5.1.对象简写 在es5中,有这样一种写法 var name = "xiaoqiang"; var age = 12; var obj = { name : nam ...

  8. es6+最佳入门实践(4)

    4.函数扩展 4.1.参数默认值 默认参数就是当用户没有传值的时候函数内部默认使用的值,在es5中我们通过逻辑运算符||来实现 function Fn(a, b) { b = b || "n ...

  9. es6+最佳入门实践(3)

    3.数组扩展 3.1.扩展运算符 扩展运算符用三个点(...)表示,从字面上理解,它的功能就是把数组扩展开来,具体形式如下: let arr = [1, 2, 3]; console.log(...a ...

随机推荐

  1. TreeMap与LinkedHashMap的区别

    TreeMap是根据元素的内部比较器进行排序的,它可以根据key值的大小排序: LinkedHashMap是保持存放顺序的. TreeMap采用红黑树算法,遍历效率高: LinkedHashMap采用 ...

  2. python2.7入门---Number(数字)

        今天咱们来简单分享一下关于python中的一种数据类型和操作方法.费话不多说哈,咱们直接来进行实践加理论.首先,我们要知道,Python Number 数据类型用于存储数.数据类型是不允许改变 ...

  3. 对C语言连等式的学习

    例子如下 [pgsql@localhost soft]$ cat test1.c #include <stdlib.h> #include <stdio.h> int main ...

  4. 两种方法实现Python二分查找算法

    两种方法实现Python二分查找算法   一. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 arr=[1,3,6,9,10,20,30] def findnumber( ...

  5. es同步mysql同步-logstash

    1.下载es https://www.elastic.co/downloads/elasticsearch 修改 config 下elasticsearch.yml   ip和端口等配置 2.下载ki ...

  6. PADS9.5的常用菜单栏

    1. PAD9.5常用的2个菜单是布线工具和选择过滤工具. 2. 布线工具菜单,如下图,依次是选择,移动,复制,删除,添加元件,布线,新建层次化符号,交换参考编号,交换引脚,添加总线,分割总线,延伸总 ...

  7. SpringBoot学习:使用logback进行日志记录

    项目下载地址:http://download.csdn.NET/detail/aqsunkai/9805821 (一)pom.xml文件中引入jar: <!-- https://mvnrepos ...

  8. Vue一些重要的知识点

    vue sync修饰(1)双向数据绑定,父子组件之间信息的交互 1⃣️在自组件中使用this.emmit('toFather'),子组件产生一个tofather事件,然后在父组件中通过@进行监听,那么 ...

  9. python学习总结----异常处理

    相关概念 - 错误:程序运行之前的语法错误,如:关键字.缩进不齐.括号不成对. - 异常:在程序运行过程中出现的问题,如:除数为0.对象属性不存在等. 异常处理 - 说明:异常处理可以理解为特殊的流程 ...

  10. 十分钟掌握pandas中文版(pandas官方文档翻译)

    转载自 https://blog.csdn.net/jiangjiang_jian/article/details/80022918