摘要:我对字典的简单学习字典的概念集合字典和散列表都可以来存储不重复的值。字典也被称为映射。中有集合类的实现,也有字典类的实现。相关操作方法实现方法,判断某个键值是否在这个字典中,有则返回。实现方法,将字典所有的值以数组的形式返回。
我对JS字典的简单学习 字典的概念
集合、字典和散列表都可以来存储不重复的值。
在集合中我们使用[值,值]来保存,在字典和散列表中使用[键,值]来存储数据。
字典也被称为映射。
ES6中有集合Set类的实现,也有字典Map类的实现。
function Dictionary() { var items = {}; }相关操作方法
实现has(key)方法,判断某个键值是否在这个字典中,有则返回true。
this.has = function(key) { return key in items; }
实现set(key, value)方法,向字典中添加新元素。
this.set = function(key, value) { items[key] = value; }
实现remove(key)方法,从字典中移除键值对应的数据值。
this.remove = function(key) { if(this.has(key)) { delete items[key]; return true; } return false; }
实现get(key)方法,查找特定的值。
this.get = function(key) { return this.has(key) ? items[key] : undefined; }
引申:undefined和null不一样,null表示变量没有值,undefined表示变量被声明但未赋值。
实现values()方法,将字典所有的值以数组的形式返回。
this.values = function() { var values = []; for(var k in items) { if(this.hasOwnProperty(k)) { values.push(items[key]); } } return values; }
clear(),size(),keys()方法与Set类一致,这里不讨论了。
实现getItems()方法
this.getItems = function() { return items; }使用Dictionary类
创建一个类的实例,然后给它添加三条电子邮件地址。
var dictionary = new Dictionary(); dictionary.set("Gandalf", "gandalf@email.com"); dictionary.set("John", "John@email.com"); dictionary.set("Tyrion", "Tyrion@email.com");
使用方法
console.log(dictionary.has("Gandalf")); //true console.log(dictionary.size()); //3 console.log(dictionary.keys()); //["Gandalf", "John", "Tyrion"]; console.log(dictionary.values()); //["Gandalf@email.com", John@email.com", "Tyrion@email.com"] console.log(dictionary.get("Tyrion")); //Tyrion@email.com
执行以下代码
dictionary.remove("John"); console.log(dictionary.keys()); //["Gandalf", "Tyrion"] console.log(dictionary.values()); //["Gandalf@email.com", "Tyrion@email.com"] console.log(dictionary.getItems()); //{Gandalf: "Gandalf@email.com", Tyrion: "Tyrion@email.com"}
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/82362.html
摘要:一向量字典树字典树,一种用空间换取时间的树形数据结构,主要特点是利用字符串的公共前缀来挺升查询性能。还有最终的数组表示的真实存储的键值,存储了,存储了。这其中还有一种节点进行了冲突的处理。 本文受深入探究Immutable.js的实现机制这篇文章启发,结合自己对Map源码的解读,谈谈我对immutable-js中map数据结构的理解,若有不正确的地方,欢迎指正。 一、Vector Tr...
摘要:我对栈的学习因为是个新手,所以都是最简单的知识学习梳理。栈是一种遵从后进先出原则的有序集合,新添加的或者待删除的元素都保留在栈的末尾,称作栈顶,另一端叫做栈底。栈的学习栈的创建创建一个类来表示栈。对于栈来说只能用和方法来进行添加和删除元素。 我对栈的学习 因为是个新手,所以都是最简单的知识学习梳理。 什么是栈 数组是计算机科学中最常用的数据结构,是数据元素的集合。有时候我们需要一种添加...
摘要:我对链表的学习什么是链表要存储多个元素,数组可能是最常用的数据结构。链表的学习创建一个链表各种方法表示要加入列表的项,它包含一个属性以及一个属性,表示要添加到列表的值,表示指向列表下一个节点项的指针。 我对JS链表的学习 什么是链表 要存储多个元素,数组可能是最常用的数据结构。这种数据结构非常方便,但是有一个缺点:从数组的起点或者中间插入或移除项的成本非常高,因为需要移动元素(比如你插...
摘要:我对集合的学习第一步知道相关概念集合是由一组无序且唯一的项组成的,在中已经实现了类似的类。就是集合第二步实现相关操作方法首先实现方法,判断值是否在集合中,返回布尔值。操作符还有另外一种实现方法,方法返回表明一个对象是否具有特定属性的布尔值。 我对集合的学习 第一步知道相关概念 集合是由一组无序且唯一的项组成的,在ES6中已经实现了类似的Set类。 function Set() { ...
摘要:但是实际写程序中,我们经常会写出许多繁杂的丑陋的代码。特别推荐,许多代码让我获益匪浅,比如这里对的使用。用可以写出很简单直观的代码,如下当然,上面不考虑效率,这里有一个利用分治法思想的高效的方法。更多文章更多阅读中参数的用法高级编程技巧 用 Python 时间也算不短了,但总感觉自己在用写 C++ 代码的思维写 Python,没有真正用到其作为脚本语言的优势。之前刷 LeetCode ...
阅读 812·2021-11-24 09:38
阅读 1043·2021-10-08 10:05
阅读 2535·2021-09-10 11:21
阅读 2778·2019-08-30 15:53
阅读 1787·2019-08-30 15:52
阅读 1901·2019-08-29 12:17
阅读 3367·2019-08-29 11:21
阅读 1569·2019-08-26 12:17