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之数据结构的更多相关文章

  1. ES6新数据结构Set让数组去重

    function unique(array){ return Array.from(new Set(array)); } var arr = ['aa','bb','cc','',1,0,'1',1, ...

  2. ES6 Map数据结构

    Map JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键.这给它的使用带来了很大的限制. ES6 提供了 Map 数据结构.它类似于对 ...

  3. ES6 Set数据结构

    Set ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. const s = new Set(); // const声明一个只读的常量.一旦声明,常量的值就不能 ...

  4. 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 ...

  5. es6 -- set 数据结构

    ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. const s = new Set(); [2, 3 ...

  6. ES6——新增数据结构Set与Map的用法

    ES6 提供了新的数据结构 Set以及Map,下面我们来一一讲解. 一.Set 特性 似于数组,但它的一大特性就是所有元素都是唯一的,没有重复. 我们可以利用这一唯一特性进行数组的去重工作. 1.单一 ...

  7. ES6(数据结构_2)

    数据结构—2 Map 与 Array 的对比 Set 与 Array的对比 Map 与 Object 的对比 Set 与 Object 的对比 (增.查.改.删) 一.Map 与 Array 的对比 ...

  8. ES6 WeakSet数据结构 与Set十分相似

    它与Set十分相似,对象的值也不能是重复的,与Set不同点: .WeakSet成员只能够是对象. .作为WeakSet成员的对象都是弱引用,即垃圾回收机制不考虑WeakSet对该对象的引用,也就是说, ...

  9. ES6 .Set数据结构去除重复元素

    用法一 var set = new Set([1, 2, 3, 4, 2, 8, 4]); //两个2 for (var elem of set) { console.log(elem) // 输出结 ...

随机推荐

  1. 理解Xaml标记语言

    理解XAML XAML基于XAML,因而具有与XAML相似的特性.在XAMl中,同样必须区分大小写,但是Xaml以.xaml作为扩展名,表示这是一个应用程序的标记扩展文件.WPF中的XAML主要用于创 ...

  2. vue本地设置请求接口及数据

    1.安装axios yarn add axios 2.在入口文件main.js中设置 import { getRequest, postRequest} from './libs/api';//导入 ...

  3. springboot项目作为war包运行

    一.首先是pom文件中设置打成war包 < packaging>war< /packaging> 二.然后是修改依赖: <dependency> <group ...

  4. Java集合 之List(ArrayList、LinkedList、Vector、Stack)理解(new)

    一. ArrayList底层实现原理 对比 和Vector不同,ArrayList中的操作不是线程安全的!所以,建议在单线程中才使用ArrayList,而在多线程中可以选择Vector或者CopyOn ...

  5. phpmyadmin登录报错crypt_random_string requires at least one symmetric cipher be loaded 解决方法

    通过phpmyadmin登陆时提示以下错误: phpmyadmin crypt_random_string requires at least one symmetric cipher be load ...

  6. PAT 1038. Recover the Smallest Number

    #include <iostream> #include <cstdlib> #include <vector> #include <algorithm> ...

  7. 在vue中安装使用vux

    最近因为的工作的原因在弄vue,从后端弄到前端之前一直用js,现在第一次接触vue感觉还挺有意思的,就是自己太菜了,这个脑子呀....不太够用.....页面设计用了一个叫vux的东西,vux可以提供一 ...

  8. 汉诺塔matlab实现

    Matlab的递归调用,好久不用matlab了,练练手.   global handCount; handCount = 1; huuotsun(1, 2, 3, 3)     function hu ...

  9. JavaWeb请求-响应学习笔记

    先来看一个流程图: 服务器处理请求的流程: (1)服务器每次收到请求时,都会为这个请求开辟一个新的线程.   (2)服务器会把客户端的请求数据封装到request对象中,request就是请求数据的载 ...

  10. PHP discuz模板语法

    Discuz! X 模板的解析主要是 ./source/class/class_template.php 文件解析处理的,如果需要深入了解请可以看看这个文件! 模板嵌套语法 将被嵌套模板内容解析为 P ...