实现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结构),但是 ...
随机推荐
- 破解idea2019版本至2089年(windows系统)
1.首先必须安装idea,然后找到安装目录下的bin目录下面 2.编辑俩个以.exe.vmoptions的文件(俩个文件的最后一行都得这样写) 3.重新打开idea,找到help下面的Register ...
- 聊聊Spring Boot Actuator
概述 在本文中,我们将介绍Spring Boot Actuator.我们将首先介绍基础知识,然后详细讨论Spring Boot 1.x和2.x中的可用内容. 我们将在Spring Boot 1.x中学 ...
- 作业九——DFA最小化,语法分析初步
- SQLI-LABS学习笔记(二)
逼话少说,如有错误,烦请指出,谢谢 这两天生病,效率很低 第5关 打开页面 发现跟前几题不同,没有直接返回数据.. 加个单引号 You have an error in your SQL syntax ...
- slow-log 和bin-log相关参数介绍
1. slow-log show global status Slow_queries --------慢查询的次数,即查询的时间超过long_query_time设置的时间(不能修改) 配置文件 ...
- Tomcat的设置4——Tomcat的体系结构与设置基于端口号的虚拟主机
一.Tomcat体系结构 从conf/server.xml可体现Tomcat的体系.一个Server可有多个service,一个service可以有多个连接器connector,每个连接器暴露出不同的 ...
- caffe学习笔记(1)安装 - Ubuntu 15.04
官方安装手册 备注:使用系统 - Ubuntu 15.04 64位操作系统(若系统位于虚拟机上,在安装CUDA后,Ubuntu将无法进入图形界面) /************************* ...
- A. Guest From the Past(数学推式子)
\(n元,买塑料杯子a元,买玻璃杯子b元,但玻璃杯子用完后可以卖c元\) \(求最多买的杯子.\) \(---------------------------分割------------------- ...
- POI问题总结,关于数字级联及多级级联(三级以上)
目录 最近公司业务需要用到excel,并且要导出模板,今天为止所有的功能都已经实现了,在这里对出现的一些问题做一个总结. 效果图: 这是一个五级联动的数据,其中第一列是数字开头,实现了五级联动 问题1 ...
- vue-cli3使用全局scss
在开发项目的时候,经常会出现多个元素样式相同,比如颜色相同.这里就需要我们设置公共样式,方便后期调试 一配置方法 1.在src/assets/styles目录下创建文件variable.scss // ...