es6之数据结构
1、set的用法
用add方法添加元素,添加的数组不可重复。
可利用set类型添加元素不重复的功能,给数组完成去重的功能
size属性用于获取set元素的长度
{
let list =new Set();
list.add(5);
list.add(7);
console.log("size",list.size); //2
}
{
let arr=[1,2,3,4,5];
let list=new Set(arr);
console.log(list.size); //2
}
{
let list=new Set();
list.add(1);
list.add(2);
list.add(1);
console.log("list",list) // {1,2}
}
但是set不会进行数据类型的转换
//set 不会进行数据类型的转换
let arr=[1,2,3,12,1,2,"2"];
let list2=new Set(arr);
console.log("list2",list2); //{1, 2, 3, 12, "2"}
set的一些方法
.add()添加
.delete() 删除
.clear() 清除
.has() 是否有
let arr=["add","delete","clear","has"];
let list=new Set(arr);
console.log(list.has("add"));
console.log("delete",list.delete("add"),list);
list.clear();
console.log("list",list);
set的遍历(key值==value值)
//读取
console.log("set的读取");
let arr=["add","delete","clear","has"];
let list=new Set(arr);
for(let index of list.keys()){
console.log("keys",index);
}
for(let value of list.values()){
console.log("value",value);
}
for(let [index,value] of list.entries()){
console.log("entries",index,value);
}
weakSet
//weakSet
/*
* weakSet是一个弱引用,只能是一个对象,没有size属性
* 没有clear方法
* 没有遍历属性
* */
let weakList=new WeakSet();
let arg={};
weakList.add(arg);
console.log("weakList",weakList);
map
{
//map的定义方法1
let map=new Map();
let arr=["123"];
map.set(arr,456);
console.log("map",map,map.get(arr));
}
{ //map的定义方法2
let map=new Map([["a",123],["b",456]]);
console.log("map args",map);
//map的方法
console.log("size",map.size);
console.log("delete",map.delete("a"),map);
console.log("clear",map.clear(),map);
}
weakMap
//WeakMap
let weakmap=new WeakMap(); let o={};
weakmap.set(o,123);
console.log(weakmap.get(o));
对比
//map、set、object对比
let item={t:1};
let map=new Map();
set =new Set();
let obj={}; //增
map.set("t",1);
set.add(item);
obj["t"]=1;
console.log("map-set-obj",map,set,obj); //查
console.info({
map_exist:map.has("t"),
set_exist:set.has(item),
obj_exist:"t" in obj
}) //改
map.set("t",2);
// set.forEach(item=>item.t?item.t=2:"");
item.t=2;
obj["t"]=2;
console.log("map-set-obj-change",map,set,obj); //删
map.delete("t");
set.delete(item);
delete obj["t"];
console.log("map-set-obj",map,set,obj);
es6之数据结构的更多相关文章
- ES6新数据结构Set让数组去重
function unique(array){ return Array.from(new Set(array)); } var arr = ['aa','bb','cc','',1,0,'1',1, ...
- ES6 Map数据结构
Map JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键.这给它的使用带来了很大的限制. ES6 提供了 Map 数据结构.它类似于对 ...
- ES6 Set数据结构
Set ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. const s = new Set(); // const声明一个只读的常量.一旦声明,常量的值就不能 ...
- es6之数据结构 set,WeakSet,mapWeakMap
{ let list = new Set(); list.add(1); list.add(2); list.add(1); console.log(list); //Set(2) {1, 2} le ...
- es6 -- set 数据结构
ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. const s = new Set(); [2, 3 ...
- ES6——新增数据结构Set与Map的用法
ES6 提供了新的数据结构 Set以及Map,下面我们来一一讲解. 一.Set 特性 似于数组,但它的一大特性就是所有元素都是唯一的,没有重复. 我们可以利用这一唯一特性进行数组的去重工作. 1.单一 ...
- ES6(数据结构_2)
数据结构—2 Map 与 Array 的对比 Set 与 Array的对比 Map 与 Object 的对比 Set 与 Object 的对比 (增.查.改.删) 一.Map 与 Array 的对比 ...
- ES6 WeakSet数据结构 与Set十分相似
它与Set十分相似,对象的值也不能是重复的,与Set不同点: .WeakSet成员只能够是对象. .作为WeakSet成员的对象都是弱引用,即垃圾回收机制不考虑WeakSet对该对象的引用,也就是说, ...
- ES6 .Set数据结构去除重复元素
用法一 var set = new Set([1, 2, 3, 4, 2, 8, 4]); //两个2 for (var elem of set) { console.log(elem) // 输出结 ...
随机推荐
- Java - 深拷贝技巧
先让我描述一下问题:我在某Action(struts2.x)-A中写了一个功能P,以当前用户的某个标识F == 1时需要走这个功能,而且这个功能因某些原因已经侵入到了其他一些method中.顺便一提, ...
- 如何删除eclipse中已经保存的svn密码
一.打开eclipse--->点击Window--->点击Perference,打开eclipse配置,输入svn,然后点击svn,找到下方svn接口,查看下svn是什么类型的接口,如果是 ...
- Linux常用指令整理
Linux常用命令整理 快捷键 [Tab] [Tab] 接在一串指令的第一个字的后面,则为"命令补全": [Tab] 接在一串指令的第二个字以后时,则为"文件补齐&quo ...
- 搭建Jquery+SpringMVC+Spring+Hibernate+MySQL平台
一. 开发环境 1. 点击此查看并下载需要的 Eclipse IDE for Java EE Developers 开发工具,依赖于java,推荐选用32位 2. 点击此查看并下载需要的 MySQ ...
- 从零开始的全栈工程师——html篇1.5
列表与边距探讨和行块 一.列表 1.无序列表(UL) 1)内部必须有子标签<li></li>2)天生自带内外边距 p也是自带 大家会发现用UL的时候内容前面会出现一个像这样的一 ...
- 【Python】Sublime text 3 搭建Python IDE
背景: 最经遇到一件很苦恼的事情,就是在Sublime text 3中写的Python代码直接挪到python原生的ide中老是报格式的错误(有时让人讨厌的缩进),没有办法,看到Sublime tex ...
- Java 多线程使用
工作中遇到的问题,记录下解决的思路 问题: 对磁盘进行碎片化测试(比如说,磁盘空间是16G),从64K开始写文件,写满后删除一半,然后写32K 的数据,写满后删除一半...直到4K写满删除一般算是结束 ...
- css 三角形的制作
参考网页: http://www.jb51.net/article/42513.htm 1 .设置宽高为0 2 .设置4条边框 3 .设置边框颜色border-color如下: border-colo ...
- 深入理解mysql的底层实现
MySQL 的常用引擎 1. InnoDB InnoDB 的存储文件有两个,后缀名分别是 .frm 和 .idb,其中 .frm 是表的定义文件,而 idb 是数据文件. InnoDB 中存在表锁和行 ...
- Java任务调度框架Quartz入门
Quartz[kwɔːts]:石英,其框架和名字一样简单朴素又不失魅力,在Java程序界,Quartz大名鼎鼎,很多Java应用几乎都集成或构建了一个定时任务调度系统,Quartz是一个定时任务调度框 ...