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中新的数据类型的主要内容,如果未能解决你的问题,请参考以下文章