set和 map 数据结构
set/map数据结构
创建:
var s=new Set();
添加成员
s.add(1)
遍历
for of
s.froEach
删除
s.delete()
判断存在
s.has()
清除
s.clear()
转为数组
array.from(set)
支持 keys. values. entries
s.keys, 注意和 Object.的区别, set不支持 Object.keys
特性
不接受添加重复的值, 所以 set 里面的值都是唯一的
判断两个值是否相等使用的是类似 ===
初始化set的时候可以接受一个数组或者一个字符串, 如果接受的是字符串那么会把字符串分解为一个数组, 不接受对象及其他基本类型, (因为都是不可迭代的??)
set 接受 ... 的方式做扩展
因为两个对象总是不相等的, 所以 set 会接受两个空对象
set 的成员可以是任何的数据类型
set 成员添加的顺序就是遍历出的顺序, 所以 set 是有序的
用法;
数组去重
真心感觉这个数据结构的没啥用啊, 主要是成员有序加不重复这个特性
WeakSet
特性
成员只能是对象
对象的引用不计入垃圾回收机制
不可遍历, 因为其成员的数是不固定的, 垃圾回收机制随时可能清空其中的一个成员, 所以不可遍历
其余相同
初始化
可以接受一个数组, 但是数组成员必须是对象
方法
delete
add
has
这个东西有啥子用吗, 闷逼脸, 都不可以遍历, 真不知道什么情况下使用. 这个东西是用来监听对象的引用的吗
Map 数据结构
特性
map就是 Object 的一种改进
map 的键和值可以使任何类型, 但是 Object不行
map 判断相等也是使用的 === 的加强版本
map 的元素是有序的
map的底层实现可能就是数组, 因为从使用来看, 确实在和数组之间转换比较容易
初始化
可以接受一个二维的数组, 其中数组元素必须有两个元素
可以接受 set 做初始化数据
方法
set, 多次的相同的键会覆盖
get
has
delete
clear
遍历
keys
values
entries
for of, 可以直接拿到 value, 但是 for of 不能遍历 Object的, 为此 es6 新增了 Object.values
接受 ...
可以使用 forEach
转为数组
使用 ... 直接转换
weakMap
weakMap 和 weakSet 的形式差不多, 也是只接受对象, 并且是弱引用, 但是只是键名是弱的, 值还是强的
特性
没有遍历方法
方法
get
set
delete
has
用处
在一个对象上设置依赖其的变量, 一旦变量不被引用, 那么其所依赖的变量都消失
set和 map 数据结构的更多相关文章
- 11 Set和Map数据结构
Set和Map数据结构 Set WeakSet Map WeakMap 首先 这四个对象都是 数据结构. 用于存放数据 Set 类似数组. 但是不能重复. 如果你有重复数据,会自动忽略 属性 size ...
- ES6 之 Set数据结构和Map数据结构 Iterator和for...of循环
ECMAScript 6 入门 Set数据结构 基本用法 ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set本身是一个构造函数,用来生成Set数据结构. va ...
- ES6中的Set、Map数据结构
Map.Set都是ES6新的数据结构,他们都是新的内置构造函数.也就是说typeof的结果,多了两个. 他们是什么: Set是不能重复的数组. Map是可以任何东西当做键的对象: ES6 提供 ...
- ECMAScript 6之Set和Map数据结构
Set 基本用法 ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set本身是一个构造函数,用来生成Set数据结构. var s = new Set(); [2, ...
- es6学习笔记-set和map数据结构
ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. const s = new Set(); [2, 3 ...
- js-ES6学习笔记-Set和Map数据结构
1.ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. 2.Set 函数可以接受一个数组(或类似数组的对 ...
- JavaScript(ES6)学习笔记-Set和Map数据结构(一)
一.Set 1.ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. , , , , ']); s; // ...
- Map 数据结构
JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键.这给它的使用带来了很大的限制. 为了解决这个问题,ES6 提供了 Map 数据结构. ...
- go map数据结构
map数据结构 key-value的数据结构,又叫字典或关联数组 声明: var map1 map[keytype]valuetype var a map[string]string var a ma ...
随机推荐
- fiddler抓包工具
转载: http://www.cr173.com/html/15341_1.html https://www.cnblogs.com/shihaiming/p/5887654.html 软件简介: 数 ...
- Linker errors in Android NDK (undefined reference to `__cxa_end_cleanup')
在 Android 中移植一个库(该库 使用了 libstlport )时 产生如下错误: ./obj/local/armeabi/objs/jniWrapper/native.o: In funct ...
- 【原创】大叔问题定位分享(21)spark执行insert overwrite非常慢,比hive还要慢
最近把一些sql执行从hive改到spark,发现执行更慢,sql主要是一些insert overwrite操作,从执行计划看到,用到InsertIntoHiveTable spark-sql> ...
- 实现JWT刷新机制以及让过期时间更精确
借助accessToken和refreshToken实现 accessToken控制刷新间隔,refreshToken控制最长过期时间 Min过期时间 = refreshToken过期时间 ...
- (原创)cocos lua 热更新从零开始(一)最简单demo
开发环境:WIN7 + cocos2dx 3.10 lua版本 0.学习这篇内容的基础是你要会创建并运行一个cocos lua项目 1.热更新的思想所谓的热更新,就是在线更新代码和资源.热更新的过程首 ...
- Python——plot可视化数据,作业8(python programming)
subject1k和subject1v的形状相同 # -*- coding: utf-8 -*- import scipy.io as sio raw_K = sio.loadmat('Subject ...
- jq-css、class、属性操作
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- laravel whereDoesntHave
select * from `feeds` where not exists (select * from `black_lists` where `feeds`.`user_id` = `black ...
- 带问号的括号匹配问题918C 1153C
cf里好像经常出 这些题,一般贪心是搞不了的.. 918C 问有多少子段[l,r]满足合法括号 先从左往右扫,如果问号+‘(' 数量 >= ')' 说明这段区间的 ) 是满足条件的 然后再从右往 ...
- ==、Equals 、ReferenceEquals它们的异同
链接 string foobar = "foobar"; string foobar2 = new StringBuilder().Append("foo"). ...