实现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结构),但是 ...
随机推荐
- elementaryos5安装mysql5.7、php7.2、nginx1.14.0
一.mysql5.7 安装mysql5.7: sudo apt-get install mysql-server-5.7 查看安装的mysql版本: mysql -V 5.7版本mysql安装过程中以 ...
- php内置函数call_user_func()
<?php //call_user_func(callback,name,age) //第一个参数callback作为回掉函数使用,其余的参数是他的参数 function now($a,$b) ...
- 我们常听到的WAL到底是什么
什么是 WAL WAL(Write Ahead Log)预写日志,是数据库系统中常见的一种手段,用于保证数据操作的原子性和持久性. 在计算机科学中,预写式日志(Write-ahead logging, ...
- java之 惰性初始化
class Soap { private String s; Soap(){ System.out.println("Soap()"); s="Constructed&q ...
- 【Linux网络基础】 DNS:介绍、作用、解析原理
1. DNS是什么? DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去+·记住能够被机器直接读 ...
- 理解CAS算法在JAVA中的作用
- Linux下Wiki服务器的搭建
一.准备工作 1.软件下载和安装 最主要的就是安装好Mysql+apache+PHP 测试apache能够解析index.php文件后就可以. mysql安装好后: adduser wiki #给 ...
- Nginx模块开发(3)————使用upstream访问第三方服务
该模块可以完成如下的功能,当我们输入http://你的ip/lcwupstream时,会使用upstream方式访问淘宝搜索,打开淘宝搜索的主页面,代码如下: //start from the ver ...
- centos7 安装高版本svn
一.安装高版本svn 1.创建一个新的yum库文件,vim /etc/yum.repos.d/wandisco-svn.repo 内容如下 [WandiscoSVN] name=Wandisco SV ...
- 3-MyBatisPlus教程(CRUD-上)
1,增加MP日志配置 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:m ...