ES6 set集合 map集合

目录

01 对象的扩展

02 链判断运算符

03 属性名表达式

04 Symbol 类型

05 set集合的使用

06 Map集合的使用

07 Set集合和Map集合的遍历方式

08 iterator迭代器


01 对象的扩展

        对象的属性和方法的简洁表示:

                es6允许在字面量对象里面直接写变量名

                let 变量名=变量值;

                let 对象 = { 变量名 }

                变量名是属性名  变量值是属性值

                相当于:

                        let 变量名=变量值

                        let 对象={属性名:变量名}

        函数的简洁表示:

                之前的写法:

                        对象={

                                函数名:function(){}

                        }

                es6新写法:

                        对象={

                                函数名(){ }  //这样的写法是函数的简写 不是箭头函数

                        }

        字面量对象的存值器和取值器: (了解)

                

02 链判断运算符

        链判断运算符:

                格式 : 对象?.属性名1?.属性名2?.属性名n

                这种写法是用来判断 属性是否存在 如果不存在 则整个表达式返回undefined不至于报错

                链判断运算符不能用于赋值操作

        null判断运算符:

                let str =show() ?? "默认值"

                只有show()方法的返回值为null或者undefined 时才取默认值

03 属性名表达式

        在字面量里面 [ 属性名 ]    可以把属性名写成表达式的形式

04 Symbol 类型

        symbol 类型是一种独一无二的类型 所有的symobol的值都是独一无二的

        通过symbol函数调用  可以返回一个独一无二的值

        symbol函数可以传入一个字符串 用来表示当前symbol

                即使symbol函数中传入的字符串一样   symbol类型的值也是不同的

        es6中增加了一种数据类型 symbol类型 可以作为属性名

        Symbol类型的属性调用Objec.keys系列方法是拿不到的

05 set集合的使用

        js数组的弊端:

                不能查重        键是索引值 无法很好的描述当前的值

        Set集合:

                格式:   const s =new Set()

                特点:        元素不允许重复 放入的元素自动查重

                                没有索引值功能

               方法:

                        增加元素: 集合名.add( )

                        根据元素内容删除元素: 集合名.delete('要删除的元素')

                        清空集合: 集合名.clear( )

                        判断是否拥有指定的元素:  集合名.has('要判断的元素')

                        集合的长度: 集合名.size

        set构造函数里面允许传入一个数组 构建一个set集合

        set集合可以给数组去重 也可以给字符串去重

        向set集合里面加入值的时候 不会发生类型转换 

        set集合判断两个元素是否相等 使用的规则类似于全等(===)

06 Map集合的使用

        js中的对象  是键值对的结构 

                对象的属性名只能是字符串或者symbol 

        Map集合是键值对结构  根据键存储值 根据键取值

                Map的键可以是任意类型  也可以是对象类型的

       Map集合的方法:

                增加元素:集合.set('键','值')

                 删除元素:集合.delete(键)

                修改元素:集合.set('键','新值')

                根据键获取值:集合.get(键')

                判断是否有指定的键:集合.has('键')

                清空集合:集合.clear()

                集合的长度: 集合.size

        Map构造函数中可以传入一个二维数组 构建一个map集合

07 Set集合和Map集合的遍历方式

        set集合的遍历:

                Set.prototype.keys(): 返回键名的遍历器

                Set.prototype.values(): 返回键值的遍历器

                Set.prototype.entries():返回键值对的遍历器

                Set.prototype.forEach():使用回调函数遍历每个成员

        Map集合的遍历:

            Map.prototype.keys():返回键名的遍历器。

            Map.prototype.values():返回键值的遍历器。

            Map.prototype.entries():返回所有成员的遍历器。

            Map.prototype.forEach():遍历 Map 的所有成员。

08 iterator迭代器

        for in循环 是for循环的简化写法

                主要是针对带有索引值的数据结构进行遍历 例如: 数组 对象

        set集合和map集合 无法使用for in循环遍历

        所以es6推出了一种迭代器遍历方法

                可以遍历很多不同结构的数据类型

        具有默认的迭代器功能的数据结构  Array Map Set String 函数里面的argument

        使用方式:

                let  迭代器对象=数据结构[symbol.iterator]() 

                通过哪个数据结构获取的迭代器对象 就是遍历哪个数据结构

                迭代器对象有一个方法:

                        next( ) 返回下一个元素对象相关的数据

                        有两个属性: value  下一个元素的值  done 表示是否还有元素

                        当value为undefined done为true的时候 表示遍历到没有元素可以遍历的情况了

  • 27
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: ES6中的SetMap是两种新增的集合类型。Set是一种无重复值的集合,可以通过new Set()来创建。它具有add方法用于向集合中添加元素,has方法用于判断集合中是否存在某个元素,clear方法用于清空集合Set也可以用于数组去重,通过new Set(\[...\])的方式将数组转换为Set,利用Set的特性去除重复值。\[1\] Map是一种键值对的集合,可以通过new Map()来创建。它具有set方法用于向集合中添加键值对,get方法用于获取指定键名对应的值,has方法用于判断集合中是否存在某个键名,clear方法用于清空集合Map的键名可以是任意数据类型,包括引用值,但需要注意的是,引用值作为键名时,需要使用相同的引用地址才能获取到对应的值。\[2\] SetMap都可以使用for...of循环或forEach方法进行遍历。在Set中,forEach的第二个参数是集合的元素,因为Set中不存在下标。而在Map中,forEach的第一个参数是键值对的值,第二个参数是键值对的键名。\[3\] 总结来说,SetMapES6中新增的集合类型,Set用于存储无重复值的集合Map用于存储键值对的集合。它们提供了一些方法来操作集合,如添加、获取、判断是否存在等。在使用时需要注意它们的特性和方法的使用方式。 #### 引用[.reference_title] - *1* *2* [ES6中的MapSet详解](https://blog.csdn.net/m0_45093055/article/details/126430467)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ES6中的setmap](https://blog.csdn.net/weixin_44247866/article/details/127561391)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值