Es6中新的数据类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Es6中新的数据类型相关的知识,希望对你有一定的参考价值。

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

Symbol值通过Symbol函数生成

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

声明:

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():清空一个集合

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

它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,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当作一个类数组对象,只是我们可以使用对象来定义数组元素的下标。

elasticsearch使用es-head在已有索引中新增字段以及更新记录

elasticsearch版本7.0,7.0版本有默认的type,8.0会彻底废弃

1、向索引idx_resource添加image_analyse字段,类型为text

语句:

“properties”:

        "image_analyse":

                    "type":"text"

            

    


2、向索引中更新某条数据的某个字段

:http://localhost:9200/index/type/id
其中index、type是必填的。

id是可选的,,不提供es自动生成。

index、type将信息进行分层,利于管理。

index可以理解为数据库,type理解为数据表,id相当于数据库表中记录的主键,具有唯一性。

http://localhost:9200/idx_resource/_doc/247134

PUT

  "catalog_id":7,

  "image_analyse":"深圳光盘日行动"



注:更新语句中的字段若没有,则此字段的值默认为空

以上是关于Es6中新的数据类型的主要内容,如果未能解决你的问题,请参考以下文章

ES6中的新数据类型——Symbol

ReactNative进阶(二十八):ES6 Symbol用法

数据类型的总结

JS的基本数据类型

JS数据类型

ES6学习小结5:何为symbol?