美文网首页
Es6中新的数据类型

Es6中新的数据类型

作者: 啥名都不好起 | 来源:发表于2018-12-21 11:57 被阅读21次

Symbol类型是es6新增的一个数据类型,Es5的基本数据类型(undefined,null,Object,Number,String,boolean)或者说是(undefined,null,Number,String,Boolean,Function,Array)。

Symbol值通过Symbol函数生成

Symbol类型是保证每个属性的名字都是独一无二的,对于一个对象由对个模块构成的情况非常有用,其实说白了就是就是类似与特殊符号的一个类型,因为因为具有唯一性所以特殊,说到唯一性,就不得不说Set和Map了,这个两个东西其实算不上是两种数据类型,我觉得应该称为数据结构更贴切,但大家都这么叫,这里也就姑且认为是数据类型吧。Set和Map这两个东西本身是一个类,可以看作构造函数,可以使用new关键字来实例化生成实例对象,它们生成的实例对象有一个明显的特点,就是成员的唯一性,它们实例化出来的对象结构类似于一个数组,但是这个类数组结构中的每一个元素都是唯一的,不重复的,所以一些简单的去重操作我们也可以使用它们,好了废话不多说,下面开始干货!

Set:    

声明:

let set = new Set();//空集合

let set2 = new Set(['one','two']);//有内容的集合

由于集合的没有重复元素的特点,所以不管怎么声明,重复元素都会被剔除掉:

控制台打印一下Set的原型:

这里说一下常用的一些东西,我习惯叫一个属性四个方法(主要是因为好记):

一个属性:size(集合大小,类似与数组的length)a.size; //3

四个方法:add(),delete(),has(),clear()

add():将元素添加至末位

add()方法因为自带返回值所以我们在使用的时候可以进行链式调用

let set= newSet(["one","two"]);

set.add("three").add("four");

console.log(set); //["one","two","three","four"]

并且可以这样:console.log(set.add("five")); //["one","two","three","four","five"]

delete(parameter):删除元素,parameter为你要删除的元素的值value

通过这个例子我们可以看出,delete()返回的结果是一个Boolean值,所以是不可以像add()那样链式调用的,否则就会报delete() is not a function

has():函数判断集合中有没有某个元素

let set = new Set(["one", "two"]);

console.log(set.has("one")); //true

console.log(set.has("three")); //false

clear():清空一个集合

这个方法是没有返回值的,只是单纯清空了这个集合

Map:

它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。

 声明:

Map的声明直接new Map()

这里Map常用的东西和Set差不多但还是有区别的,Map没有add方法,但是比Set多了set和get方法,删除和清空都和Set都是一样的delete和clear,判断是否有某个值也可以使用has方法,这些方法的参数为集合元素的键。

这里主要说一下get和set:

let json={ name:"websong",skili:"web"};

var msp=new Map();

msp.set(json,'iam'); //这里是设置一个键值对,以json这个对象为键吗,"iam"这个字符串是json这个键的值

console.log(msp);//Map(1) {{…} => "iam"}

msp.set('niubi','111');//这里同样也是设置一个键值对,以字符串'niubi'为键,字符串'111'为它的值

console.log(msp);//Map(2) {{…} => "iam", "niubi" => "111"}

总结下来,Set的实例化对象是一个类数组的结构,并且是一个元素具有唯一性的数组对象,而Map的实例化对象就是单纯的键值对集合,但是这个键值对可以使用对象或是其它东西来充当键,其实也可以将Map当作一个类数组对象,只是我们可以使用对象来定义数组元素的下标。

相关文章

  • 前端海底捞不定期跟新

    2017年8月 1,ES6 Map和Set Map ES6中新增的数据类型,类似PHP中的键值对形式结构 Set ...

  • web前端ES6/7/8新特性

    ES6中新增了哪些数据类型?Symbol类型(基本)Set类型(复杂)Map类型(复杂)WeakSet类型(复杂)...

  • ES6 中的 Symbol

    JavaScript 之 Symbol Symbol是什么 Symbol是ES6中新引入的一种基本数据类型。Sym...

  • ECMAScript6--10.Symbol用法

    Symbol(ES6中新增加的数据类型) 1.Symbol的概念* 这种数据类型提供独一无二的值;比如:在js中声...

  • Symbol-ES6神奇的数据类型

    一、前言 symbol 是ES6中新增的一种特殊的、不可变的基本数据类型(primitive data type)...

  • ES6中的新数据类型——Symbol

    今天小编和大家来聊一聊es6中新增的一个原始数据类型Symbol。在es5中原始数据类型(基本数据类型)有以下六种...

  • 25.Symbol的使用

    Symbol是什么呢?Symbol是ES6中新增的一个基本数据类型,翻译为符号。那么为什么需要Symbol呢? 在...

  • Es6中新的数据类型

    Symbol类型是es6新增的一个数据类型,Es5的基本数据类型(undefined,null,Object,Nu...

  • js中的set和map类型

    Set与map Es6中新增加了两个数据类型set和map类型,下面就看下这两个类型的特性和用法。 一、 Set ...

  • 2018-04-02 常考es6知识点小结

    1、symbol知识点: es6中新增的一种基本数据类型;主要特点唯一性(为对象添加属性时,避免属性名冲突);不能...

网友评论

      本文标题:Es6中新的数据类型

      本文链接:https://www.haomeiwen.com/subject/vwcmkqtx.html