实现es6中的set和map
转载自: https://www.cnblogs.com/hui-fly/p/9459152.html
https://blog.csdn.net/roamingcode/article/details/81975913
set
function Set (arr) {
let item = {};
this.size = 0;
if (arr) {
for (let i of arr) {
item[i] = i;
}
this.size = arr.length;
}
this.has = function (val) {
return item.hasOwnProperty(val);
}
this.add = function (val) {
if (!this.has(val)) {
item[val] = val;
this.size ++;
}
}
this.delete = function (val) {
if (this.has(val)) {
delete item[val];
this.size --;
}
}
this.clear = function () {
item = {};
this.size = 0;
}
this.values = function () {
return Object.values(item);
}
}
let set = new Set([1, 2, 3]);
console.log(set.has(3)); // true
console.log(set.has(4)); // false
set.add(0);
console.log(set.has(0)); // true
console.log(set.size); //
set.delete(3);
console.log(set.has(3)); // false
console.log(set.size); //
console.log(set.values()); // [0,1,2]
map
class Map {
constructor (arr = []) {
this.items = {};
this.size = 0;
arr.forEach(arr_item => {
this.set(arr_item[0], arr_item[1]);
})
}
has (val) {
return this.items.hasOwnProperty(val);
}
set (key, val) {
if (!this.has(key)) {
this.size ++;
}
this.items[key] = val;
}
get (key) {
return this.has(key)? this.items[key]: undefined;
}
delete (key) {
if (this.items.has(key)) {
delete this.items[key];
this.size --;
return true;
} else {
return false;
}
}
clear () {
this.items = {};
this.size = 0;
}
keys () {
return Object.keys(this.items);
}
values () {
return Object.values(this.items);
}
}
let map = new Map([['name', 'alice'], ['age', 19]]);
console.log(map.has('age')); // true
console.log(map.get('age')); //
map.set('address', 'bupt');
map.set('age', 20);
console.log(map.size); // 3
console.log(map.keys()); // [ 'name', 'age', 'address' ]
console.log(map.values()); // [ 'alice', 20, 'bupt' ]
实现es6中的set和map的更多相关文章
- ES6中的Set和Map集合
前面的话 在ES6标准制定以前,由于可选的集合类型有限,数组使用的又是数值型索引,因而经常被用于创建队列和栈.如果需要使用非数值型索引,就会用非数组对象创建所需的数据结构,而这就是Set集合与Map集 ...
- ES6 中的 Set、Map 和 WeakMap
Set 是 ES6 新增的有序列表集合,它不会包含重复项. Set 支持 add(item) 方法,用来向 Set 添加任意类型的元素,如果已经添加过则自动忽略: has(item) 方法用来检测 S ...
- ES6中的Set、Map数据结构
Map.Set都是ES6新的数据结构,他们都是新的内置构造函数.也就是说typeof的结果,多了两个. 他们是什么: Set是不能重复的数组. Map是可以任何东西当做键的对象: ES6 提供 ...
- ES6中的Set与Map数据结构
本文实例讲述了ES6学习笔记之Set和Map数据结构.分享给大家供大家参考,具体如下: 一.Set ES6提供了新的数据结构Set.类似于数组,只不过其成员值都是唯一的,没有重复的值. Set本身是一 ...
- es6中的Set和Map
Set: (1)set的key是number类型,从0开始 (2)向 Set 加入值的时候,不会发生类型转换,5和"5"是两个不同的值 (3)当向Set add相同的值时,会去掉重 ...
- ES6中的Set和Map对象数据结构
set对象数据结构 构建某一类型的对象 -对象的实例化 let arr = [1, 2, 3, 3, 4, 5] let rec = new Set(arr)//可以传参数,数组或者对象 consol ...
- ES6 中的 Map和Set
集合的概念以及和数组的区别 其实数组也是集合, 只不过数组的索引是数值类型.当想用非数值类型作为索引时, 数组就无法满足需要了. 而 Map 集合可以保存多个键-值对(key-value), Set ...
- ES6中map和set用法
ES6中map和set用法 --转载自廖雪峰的官方网站 一.map Map是一组键值对的结构,具有极快的查找速度. 举个例子,假设要根据同学的名字查找对应的成绩,如果用Array实现,需要两个Arra ...
- ES6中的Map集合(与java里类似)
Set类型可以用来处理列表中的值,但是不适用于处理键值对这样的信息结构.ES6也添加了Map集合来解决类似的问题 一.Map集合 JS的对象(Object),本质上是键值对的集合(Hash结构),但是 ...
随机推荐
- Apk优化极致
1. webp WebP格式,谷歌(google)开发的一种旨在加快图片加载速度的图片格式.图片压缩体积大约只有JPEG的2/3,并能节省大量的服务器宽带资源和数据空间.Facebook Ebay等知 ...
- python学习07列表
'''列表''''''列表:是可变的序列,也是一种可以存储各种数据类型的集合 用[]中括号表示列表的开始和结束:元素之间用,逗号隔开 '''l1=[] #空列表print(len(l1))l2=[&q ...
- 2019-2020-1 20199329《Linux内核原理与分析》第七周作业
<Linux内核原理与分析>第七周作业 一.本周内容概述: 对Linux系统如何创建一个新进程进行追踪 分析Linux内核创建一个新进程的过程 二.本周学习内容: 1.学习进程的描述 操作 ...
- Display a QMessageBox from a QThread
Emit a signal. Since you cannot do UI stuff in a Qthread, instead send your message as an argument o ...
- 【阅读笔记】Ranking Relevance in Yahoo Search (二)—— maching learned ranking
3. MACHINE LEARNED RANKING 1) 完全使用不好的数据去训练模型不可行,因为负面结果不可能覆盖到所有方面: 2) 搜索可以看做是个二分问题,在此实验中,我们使用gradient ...
- elementUI字体图标不显示问题
原文链接: 点我 自己搭建的Vue项目,没有使用vue-cli,引入elementUI时提示字体图标404,找不到文件,如下错误: GET http://localhost:9090/WEB-INF/ ...
- tomcat多个springboot项目启动失败
多个springboot项目打包成war包并放到tomcat下运行时出错了错误信息: Caused by: org.springframework.jmx.export.UnableToRegiste ...
- 能量项链(区间DP入门)
题面:能量项链https://www.luogu.com.cn/problem/P1063 乍一看和石子合并差不多,可是多了头值和尾值,看起来十分麻烦 我们画一张图,紫色表示头值,蓝色表示尾值.规定西 ...
- 牛客小白月赛16 小石的妹子 二分 or 线段树
牛客小白月赛16 这个题目我AC之后看了一下别人的题解,基本上都是线段树,不过二分也可以. 这个题目很自然就肯定要对其中一个进行排序,排完序之后再处理另外一边,另一边记得离散化. 怎么处理呢,你仔细想 ...
- 关于使用ffmpeg的一些牢骚
一.啰嗦几句 好几年不写博客了,一是工作计算机都加密了没法编辑提交:二是各种语言混用,什么都会就是什么都不会,delphi.c#.vb.python.c++要说我精通啥,啥也不精,所以不敢乱写. 最近 ...