首页 > 编程语言 >学习JavaScript数据结构与算法 第八章

学习JavaScript数据结构与算法 第八章

时间:2023-05-09 21:14:47浏览次数:42  
标签:map set console log JavaScript 第八章 数据结构 com email

八,字典和散列表

8.3 ES2015 Map 类

ECMAScript 2015 新增了 Map 类。

const map = new Map();

map.set('Gandalf', 'gandalf@email.com');
map.set('John', 'johnsnow@email.com');
map.set('Tyrion', 'tyrion@email.com');

console.log(map.has('Gandalf')); // true

console.log(map.size); // 3

console.log(map.keys()); // 输出{"Gandalf", "John", "Tyrion"}

console.log(map.values()); // 输出{"gandalf@email.com", "johnsnow@email.com","tyrion@email.com"}

console.log(map.get('Tyrion')); // tyrion@email.com

ES2015 的 Map 类的 values 方法和 keys 方法都返回 Iteratr.

删除 map 中的元素可以用 delete 方法。

map.delete('John');

clear 方法会重置 map 数据结构。

8.4 ES2015 WeakMap 类 和 WeakSet 类

除了 Set 和 Map 这两种新的数据结构,ES2015 还增加了它们的弱化版本,WeakSet 和 WeakMap。

基本上,Map 和 Set 与其弱化版本之间仅有的区别是:

  • WeakSet 或 WeakMap 类没有 entries、keys 和 values 等方法
  • 只能用对象作为键。创建和使用这两个类主要是为了性能。

WeakSet 和 WeakMap 是弱化的(用对象作为键),没有强引用的键。这使得 JavaScript 的垃圾回收器可以从中清除整个入口。

另一个优点是,必须用键才可以取出值。这些类没有 entries、keys 和 values 等迭代器方法,因此,除非你知道键,否则没有办法取出值。

const map = new WeakMap();

const ob1 = { name: 'Gandalf' };
const ob2 = { name: 'John' };
const ob3 = { name: 'Tyrion' };

map.set(ob1, 'gandalf@email.com');
map.set(ob2, 'johnsnow@email.com');
map.set(ob3, 'tyrion@email.com');

console.log(map.has(ob1)); // true
console.log(map.get(ob3)); // tyrion@email.com
map.delete(ob2); 

同样的逻辑也适用于 WeakSet 类。

标签:map,set,console,log,JavaScript,第八章,数据结构,com,email
From: https://www.cnblogs.com/sanhuai/p/17386273.html

相关文章

  • 学习JavaScript数据结构与算法 第七章
    7.集合7.4ESMAScript2015---Set类ECMAScript2015新增了Set类作为JavaScriptAPI的一部分。我们可以基于ES2015的Set开发我们的Set类。constset=newSet()set.add(1)console.log(set.values())//@iteratorconsole.log(set.has(1))console.log(set......
  • 数据结构(python版)—— 1、前期知识和综述
    前言为了提高代码质量和后续处理需求的能力,有必要再复习下算法和数据结构,为后续ESP32项目和数据处理打下坚实基础。故根据所学整理此系列文章。文章分为:1、概述:计算理论2、算法分析3、基本结构(线性表、链表、栈和队列)4、递归(递归算法和分治策略)5、排序与查找6、树及其算法......
  • 常见算法和数据结构存在的坑(updating)
    数组:c++数组下标都+5会稳。\(5000*5000\)的别开\(6000*6000\)。二分:实数二分可能因为神马精度问题出现了不满足二分序的情况,要小心。注意二分完后,不能直接用当前数组里存的值,要pd(ans),值才是正确的。边集数组:无向图边的范围要开2倍。多组数据要清空的有tot,final当用到反向边的时候......
  • javascript函数声明和函数表达式
    JavaScript中定义函数最常用的方式是函数声明和函数表达式。这两种技术非常相似,有时甚至难以区分,但在后续章节中可以看到,它们之间还是存在着微妙的区别。JavaScript定义函数最基本方式是函数声明,如下图:正如你所见,每个函数声明以强制性的function开头,其后紧接着强制性的函数名,以及......
  • JavaScript 正则表达式
    正则表达式RegularExpression在编程语言中,正则表达式用于匹配指定的字符串。如果想要在字符串Thedogchasedthecat中匹配到the这个单词,可以使用如下正则表达式:/the/。注意,正则表达式中不需要引号。使用测试方法TestMethodJavaScript中有多种使用正则表达式的方法......
  • 数据结构实训_银行管理系统
    记录下自己寒假写的千行代码,虽然千行,但是质量不高,但是好歹自己写的,记录下嘿嘿#include<bits/stdc++.h>usingnamespacestd;constintINF=0x3f3f3f3f;//----------------------------------------顾客信息-----------------------------------------structnode{in......
  • 学习JavaScript数据结构与算法 第五章
    五,队列和双端队列我们已经学习了栈。队列和栈非常类似,但是使用了与后进先出不同的原则。双端队列是一种将栈的原则和队列的原则混合在一起的数据结构。5.1队列数据结构队列是遵循先进先出(FIFO,也称为先来先服务)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最......
  • JavaScript
    JavaScript概述ECMAScript和JavaScript的关系1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就......
  • Javascript异步编程的4种方法
    你可能知道,Javascript语言的执行环境是"单线程"(singlethread)。所谓"单线程",就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须......
  • JavaScript: XMLHTTPRequest
     XMLHttpRequest(javascript.info)<body><script>//CreateanewXMLHTTPRequestobjectletxhr=newXMLHttpRequest()xhr.timeout=5000//timeoutinmsleturl=newURL('https://cursive.winch.io/......