字典的实现

// 字典类
function Dictionary () {
this.add = add;
this.dataStore = new Array();
this.find = find;
this.remove = remove;
this.showAll = showAll;
this.count = count;
this.clear = clear;
}
function add (key, value) {
this.dataStore[key] = value;
}
function find (key) {
return this.dataStore[key];
}
function remove (key) {
delete this.dataStore[key];
}
function showAll () {
let datakeys = Array.prototype.slice.call(Object.keys(this.dataStore));
for (let key in datakeys.sort()) {
console.log(`${datakeys[key]} -> ${this.dataStore[datakeys[key]]}`);
}
}
// 计数
function count () {
let n = 0;
for (let key in Object.keys(this.dataStore)) {
++n;
}
return n;
}
// 清空
function clear () {
Object.keys(this.dataStore).forEach((key) => {
delete this.dataStore[key];
}, this);
}

练习

使用Dictionary类写一个程序,该程序用来存储一段文本中各个单词出现的次数。该程序显示每个单词出现的次数,但每个单词只显示一次。比如下面一段话“the brown fox jumped over the blue fox”,程序的输出应为:

  • the: 2
  • brown: 1
  • fox: 2
  • jumped: 1
  • over: 1
  • blue: 1
function showWordCount (word) {
let d = new Dictionary();
let words = word.split(' ');
for (let i = 0, max = words.length; i < max; ++i) {
// 首次出现
if (typeof d.find(words[i]) === 'undefined') {
d.add(words[i], 1);
} else {
++d.dataStore[words[i]];
}
}
Object.keys(d.dataStore).forEach((key) => {
console.log(`${key}: ${d.find(key)}`);
}, this);
}
// 示例
showWordCount('the brown fox jumped over the blue fox');

JavaScript数据结构与算法-字典练习

JavaScript数据结构与算法-字典练习的更多相关文章

  1. 为什么我要放弃javaScript数据结构与算法(第七章)—— 字典和散列表

    本章学习使用字典和散列表来存储唯一值(不重复的值)的数据结构. 集合.字典和散列表可以存储不重复的值.在集合中,我们感兴趣的是每个值本身,并把它作为主要元素.而字典和散列表中都是用 [键,值]的形式来 ...

  2. JavaScript数据结构——集合、字典和散列表

    集合.字典和散列表都可以存储不重复的值. 在集合中,我们感兴趣的是每个值本身,并把它当作主要元素.在字典和散列表中,我们用 [键,值] 的形式来存储数据. 集合(Set 类):[值,值]对,是一组由无 ...

  3. 为什么我要放弃javaScript数据结构与算法(第九章)—— 图

    本章中,将学习另外一种非线性数据结构--图.这是学习的最后一种数据结构,后面将学习排序和搜索算法. 第九章 图 图的相关术语 图是网络结构的抽象模型.图是一组由边连接的节点(或顶点).学习图是重要的, ...

  4. 为什么我要放弃javaScript数据结构与算法(第六章)—— 集合

    前面已经学习了数组(列表).栈.队列和链表等顺序数据结构.这一章,我们要学习集合,这是一种不允许值重复的顺序数据结构. 本章可以学习到,如何添加和移除值,如何搜索值是否存在,也可以学习如何进行并集.交 ...

  5. JavaScript数据结构与算法-散列练习

    散列的实现 // 散列类 - 线性探测法 function HashTable () { this.table = new Array(137); this.values = []; this.sim ...

  6. javascript数据结构与算法--高级排序算法

    javascript数据结构与算法--高级排序算法 高级排序算法是处理大型数据集的最高效排序算法,它是处理的数据集可以达到上百万个元素,而不仅仅是几百个或者几千个.现在我们来学习下2种高级排序算法-- ...

  7. javascript数据结构与算法-- 二叉树

    javascript数据结构与算法-- 二叉树 树是计算机科学中经常用到的一种数据结构.树是一种非线性的数据结构,以分成的方式存储数据,树被用来存储具有层级关系的数据,比如文件系统的文件,树还被用来存 ...

  8. javascript数据结构与算法--散列

    一:javascript数据结构与算法--散列  一:什么是哈希表? 哈希表也叫散列表,是根据关键码值(key,value)而直接进行访问的数据结构,它是通过键码值映射到表中一个位置来访问记录的,散列 ...

  9. javascript数据结构与算法---队列

    javascript数据结构与算法---队列 队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素.队列用于存储按顺序排列的数据,先进先出,这点和栈不一样(后入先出).在栈中,最后入栈的元素 ...

随机推荐

  1. Android_View_得到Activity

    Context context = view.getContext(); if (context instanceof Activity){ Activity activity = (Activity ...

  2. Flume、Kafka、Storm结合

    Todo: 对Flume的sink进行重构,调用kafka的消费生产者(producer)发送消息; 在Sotrm的spout中继承IRichSpout接口,调用kafka的消息消费者(Consume ...

  3. asp.net web系统开发浏览器和前端工具

    1. Firefox浏览器+firebug插件 下载安装Firefox浏览器后,在菜单-附加组件-扩展中,搜索firebug,下载长得像甲虫一样的安装. 在web调试中,直接点击右上角的虫子,即可调出 ...

  4. python下载腾讯云慢日志并发送邮件附件

    这里没优化,只是对腾讯云下载慢日志,然后通过邮件发送出去 #!/usr/bin/env python # encoding: utf-8 import json import smtplib impo ...

  5. chrome 非安全模式解决开发跨域问题

    这个参数可以降低chrome浏览器的安全性,禁用同源策略,利于开发人员本地调试. ps:如果是mac用户(记得 Command + Q 关闭chrome):  open -a Google\ Chro ...

  6. Atitit. Derby的使用总结attilax

    Atitit. Derby的使用总结attilax 1. Derby数据库的存储结构1 2. Derby gui工具1 3. 代码读写derby2 4. 与sqlite db4o的对比4 5. 参考5 ...

  7. YUV格式详细解释与FFMPEG的关系

    YUV主要的采样格式 主要的采样格式有YCbCr 4:2:0.YCbCr 4:2:2.YCbCr 4:1:1和 YCbCr 4:4:4.其中YCbCr 4:1:1 比较常用,其含义为:每个点保存一个 ...

  8. Android中Intent传递类对象的方法一(Serializable)

    Activity之间通过Intent传递值,支持基本数据类型和String对象及它们的数组对象byte.byte[].char.char[].boolean.boolean[].short.short ...

  9. 383. Ransom Note【easy】

    383. Ransom Note[easy] Given an arbitrary ransom note string and another string containing letters f ...

  10. openwrt安装编译

    官网安装编译推荐: https://wiki.openwrt.org/doc/howto/buildroot.exigence https://wiki.openwrt.org/doc/howto/b ...