资讯专栏INFORMATION COLUMN

【前端数据结构基础】字典

Acceml / 2360人阅读

摘要:一构造字典数据结构我们将使用实现字典结构,各部分功能使用注释说明。参考资料数据结构与算法描述第章字典由于书上的源代码出现了错误,因此代码根据实际运行结果做了相应修改。

前言

字典是一种以键-值对形式存储数据的数据结构,如同手机通讯录中,想要寻找一个电话时,只要找到名字就可以找到其电话号码。
JavaScript的Object类就是以字典的形式设计的。这里将使用Object类的特性,实现一个Dictionary类,让字典类型的对象使用起来更加简单。

一、构造字典数据结构

我们将使用JavaScript实现字典结构,各部分功能使用注释说明。

/**
 * Dictionary 构造方法
 * datastore 存储数据
 */
function Dictionary () {
  this.datastore = new Array()
  this.add = add
  this.find = find
  this.remove = remove
  this.showAll = showAll
  this.count = count
  this.clear = clear
  this.showAllBySort = showAllBySort
}

/**
 * add() 方法进行添加数据
 * @param {*} key
 * @param {*} value
 */
function add (key, value) {
  this.datastore[key] = value
}

/**
 * find() 方法进行查找key值对应的value
 * @param {*} key
 */
function find (key) {
  return this.datastore[key]
}

/**
 * remove() 方法进行删除对应的key值键值对
 * @param {*} key
 */
function remove(key) {
  delete this.datastore[key]
}

/**
 * showAll() 方法进行遍历显示所有的key、value
 */
function showAll () {
  let datakeys = Array.prototype.slice.call(Object.keys(this.datastore))
  for (let key in datakeys) {
    console.log(datakeys[key] + " -> " + this.datastore[datakeys[key]])
  }
}

/**
 * showAllBySort() 方法进行遍历显示所有排序后的key、value
 */
function showAllBySort () {
  let datakeys = Array.prototype.slice.call(Object.keys(this.datastore)).sort()
  for (let key in datakeys) {
    console.log(datakeys[key] + " -> " + this.datastore[datakeys[key]])
  }
}

其中有几点个人认为需要强调:

我们想要删除键-值对时需要使用JavaScript中的内置函数——delete。该函数使用对键的引用作为参数,同时删除键与其关联的值。

我们使用Object类keys()方法可以返回传入参数中存储的所有键。(Object.keys()for...in循环的区别主要在于for...in循环会枚举其原型链上的属性)

slice()方法是从已有的数组中返回选定的元素

当我们在计算字典中元素的个数时,并没有直接使用length方法,因为当键的类型为字符串时,length属性无法使用

结束语

使用JavaScript实现字典数据结构相对来说难度不大,但我们需要注意其中的一些细节部分。

参考资料:数据结构与算法JavaScript描述 第7章 字典
由于书上的源代码出现了错误,因此代码根据实际运行结果做了相应修改。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/107986.html

相关文章

  • 简析前端学习python3的基础

    摘要:元组是静态数组,它们不可变,且其内部数据一旦创建便无法改变。元组缓存于运行时环境,这意味着我们每次使用元组时无须访问内核去分配内存。 以下是整理的JavaScript和python的基础区别的整理: 字符串、列表、元组、字典、集合、函数 字符串 声明一个字符串 python str = 123 str = 123 Tips: 如果是三个引号的话,那么在py中就是注释的意思 ...

    summerpxy 评论0 收藏0
  • 简析前端学习python3的基础

    摘要:元组是静态数组,它们不可变,且其内部数据一旦创建便无法改变。元组缓存于运行时环境,这意味着我们每次使用元组时无须访问内核去分配内存。 以下是整理的JavaScript和python的基础区别的整理: 字符串、列表、元组、字典、集合、函数 字符串 声明一个字符串 python str = 123 str = 123 Tips: 如果是三个引号的话,那么在py中就是注释的意思 ...

    LiveVideoStack 评论0 收藏0
  • 前端中常见数据结构小结

    摘要:下列将笔者涉猎到的与前端相关的数据结构案例作如下总结数据结构案例栈其它数据结构的基础,中间件机制队列其它数据结构的基础链表中的的优化集合对应中的字典对应中的哈希表一种特殊的字典,可以用来存储加密数据树图暂时没遇到,不过里面的蛮常见 showImg(https://segmentfault.com/img/remote/1460000016060996?w=640&h=280); 常见数...

    suemi 评论0 收藏0
  • 30岁零基础自学编程,先学哪种语言最好?

    摘要:大学,光学工程研究生毕业,和程序猿完全不搭边。那怎么办,试着学一学呗,学习才是程序猿的天性。所以我在想程序猿是不是都需要新知识刺激一下,才能保持兴奋的头脑。有句话说的很对程序猿就像好奇的猫,追着毛球的线头玩,最后一个毛球在脑袋里搅浆糊。 说说我自己的经历。211大学,光学工程研究生毕业,和程序猿完全不搭边。 毕业后进了成都某国字头研究所,在行业里摸爬滚打了四年,2018年机缘巧合在家养...

    xietao3 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<