野生前端的数据结构基础练习(4)——字典

大史不说话 发表于 2018/10/30 11:16:27 2018/10/30
【摘要】 网上的相关教程非常多,基础知识自行搜索即可。习题主要选自Orelly出版的《数据结构与算法javascript描述》一书。

野生前端.jpg

网上的相关教程非常多,基础知识自行搜索即可。

习题主要选自Orelly出版的《数据结构与算法javascript描述》一书。

参考代码可见:https://github.com/dashnowords/blogs/tree/master/Structure/Dictionary

字典的基本知识

键值对形式存储数据的数据结构,在Javascript中更多地是直接使用对象,一般只在有排序需求的场景下会用到本篇中构造的Dictionary类,因为对象属性是无序的。

字典的应用

字典在Javascript中是非常常用的技术之一,一般会和设计模式中的策略模式一起被提及。策略模式指的是定义一系列的算法,把它们一个个封装起来。将不变的部分和变化的部分隔开是每个设计模式的主题,策略模式也不例外,策略模式的目的就是将算法的使用与算法的实现分离开来。例如下面一段计算薪水和奖金的示例:

var obj = {        "A": function(salary) {            return salary * 4;
        },        "B" : function(salary) {            return salary * 3;
        },        "C" : function(salary) {            return salary * 2;
        } 
};var calculateBouns =function(level,salary) {    return obj[level](salary);
};console.log(calculateBouns('A',10000)); // 40000

基本练习

构造一个Dictionary类。实现下列基本方法

  • add(key, value)——添加一条记录

  • find(key)——查找指定键对应的值

  • remove(key)——移除指定键值对

  • showAll( )——显示所有键值对

  • clear( )——清空数据

课后习题(书中第七节习题)

  1. 写一个程序,该程序从文本读入名字和电话号码,然后将其存入一个字典,程序包含如下功能:显示单个电话号码,显示所有电话号码,增加新的电话号,删除电话,清空所有电话。

  2. 使用Dictionary类写一个程序,用来统计一段文本中各个单词出现的次数。例如,"the brown for jumped over the blue fox",对应的输出为:

the:2brown:1fox:2jumped:1over:1blue:1
  1. 修改练习2,使单词按字母顺序显示。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。