资讯专栏INFORMATION COLUMN

【译】JavaScript数据结构(1):什么是数据结构

K_B_Z / 1678人阅读

摘要:它到底是什么,是作用于数据的结构吗这同样是一个模棱两可的术语。最后我还是搞清楚了数据结构的概念,那就简单的把术语数据结构称为数据的结构。目标数据结构系列技术文章,会告诉你数据结构并不是晦涩难懂的,更不是神秘的。

翻译:疯狂的技术宅
英文:https://code.tutsplus.com/tut...
说明:本文翻译自系列文章《Data Structures With JavaScript》,总共为四篇,原作者是在美国硅谷工作的工程师 Cho S. Kim。

初次翻译,如果存在问题欢迎指出和探讨。

说明:本专栏文章首发于公众号:jingchengyideng 。

一直以来,我都认为“数据结构”这个术语是令人困惑的。它到底是什么,是“作用于数据的结构”吗?这同样是一个模棱两可的术语。

当我和同伴们分享自己的困惑时,他们很快就会说:“有结构的数据”。满意的表情出现在他们脸上,这让我怀疑自己甚至怀疑人生。我想这就是自己应该知道的。

最后我还是搞清楚了数据结构的概念,那就简单的把术语“数据结构”称为“数据的结构”。这样,我们就把焦点从“数据”(一件事)转移到了“结构”(组织)。这是一个微妙但非常重要的细节。换句话说,我们不再关注事物本身,而是关注如何组织事物的过程。

让我们想象一下,假设我们讨论的东西都是书籍。那么怎样做才是合理的呢?是书籍的结构,还是书籍的组织方式呢?在我看来,后者更容易理解。重点在于怎样组织而不是书籍本身。

不同类型的数据结构

书籍,就像数据一样,可以用多种方式组织起来。假如我们有20本书,那么应该怎样组织它们呢?

如果我们想要在书架上很快的找到一本参考书,不妨这样做:把所有的书都按照字母顺序排列在书架上,当你需要某一本书时,就可以很快的找到它,因为我们知道书籍是按照字母表的顺序摆放的。

如果我们想按照一个特定的顺序阅读所有的书,比如从第一本读到最后一本,那么我们就应该按照这种顺序把书放置在书架上,并且还需要制定一个规则来约束这种阅读顺序。

如果我们没有足够的空间把所有的书全都放在一起,就需要一种能够快速找到它们的方式进行组织。比如:家里的不同位置散落着20本书,我们就需要一个有两列的表格,其中第一列列出书的标题,第二列列出其对应的位置。

到这里我们应该已经清楚了,组织书籍的方法有很多,换句话说有很多种不同的数据结构。用于web开发中的数据结构,就像前面书籍的例子一样,是由我们的需求决定的。

现在我们知道了,不同的需求还需要依赖不同的数据结构来实现。接下来我们还应该知道,当使用和创建这些数据结构时,并不需要什么高深的编码知识,所有人哪怕是刚入门的小菜鸟都可以创建它。对于前端程序员来讲,只需要了解常用的JavaScript基本类型(例如:Boolean)和引用类型(例如:Object)。

如果即使我这样解释对你来说也比较难,别担心,通常我会想象有一个集合,这是一种数据结构,就像一个集合一样,啊哈,多么狗血的解释。首先集合不是什么东西,集合是组织数据的一种方式的名字;其次我们要知道,一个集合是用对象创建的。

目标

《JavaScript数据结构》系列技术文章,会告诉你数据结构并不是晦涩难懂的,更不是神秘的。相反,它们会使我们的生活更简单。我将在这个系列的文章中,通过介绍一到两种类似的数据结构,来证明这点。

大纲

由于有太多的数据结构需要被深入讨论,限于篇幅,我们将只探讨几种最常见也最重要的数据结构:

栈和队列

单链表和双链表链表

树(深度优先搜索和广度优先搜索)

总结

当我们完成这个系列的时候,我希望你不仅学会了如何实现这些常见的数据结构,而且还能够灵活的运用到自己的项目中。

当你意识到数据结构在组织数据时所发挥的作用时,会对它更加钟爱,甚至你会开始用另外一种思路,来考虑应该怎样组织你的数据。

欢迎扫描二维码关注公众号,每天推送我翻译的技术文章。

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

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

相关文章

  • 正在失业中的《课多周刊》(第3期)

    摘要:正在失业中的课多周刊第期我们的微信公众号,更多精彩内容皆在微信公众号,欢迎关注。若有帮助,请把课多周刊推荐给你的朋友,你的支持是我们最大的动力。是一种祸害译本文浅谈了在中关于的不好之处。浅谈超时一运维的排查方式。 正在失业中的《课多周刊》(第3期) 我们的微信公众号:fed-talk,更多精彩内容皆在微信公众号,欢迎关注。 若有帮助,请把 课多周刊 推荐给你的朋友,你的支持是我们最大的...

    robin 评论0 收藏0
  • 正在失业中的《课多周刊》(第3期)

    摘要:正在失业中的课多周刊第期我们的微信公众号,更多精彩内容皆在微信公众号,欢迎关注。若有帮助,请把课多周刊推荐给你的朋友,你的支持是我们最大的动力。是一种祸害译本文浅谈了在中关于的不好之处。浅谈超时一运维的排查方式。 正在失业中的《课多周刊》(第3期) 我们的微信公众号:fed-talk,更多精彩内容皆在微信公众号,欢迎关注。 若有帮助,请把 课多周刊 推荐给你的朋友,你的支持是我们最大的...

    Joyven 评论0 收藏0
  • 】我最喜欢的 JavaScript 设计模式

    摘要:原文链接译文原链译我最喜欢的设计模式我最喜欢的设计模式我觉得聊一下我爱用的设计模式应该很有意思。我是一步一步才定下来的,经过一段时间从各种来源吸收和适应直到达到一个能提供我所需的灵活性的模式。 原文链接:My Favorite JavaScript Design Pattern译文原链:【译】我最喜欢的 JavaScript 设计模式 我最喜欢的 JavaScript 设计模式 我觉得...

    xuxueli 评论0 收藏0
  • 】区块链如何工作的——用JavaScript演示

    摘要:我同时也建立了一个基于浏览器的版本安装命令行工具在此之前请先安装然后在你的命令行中运行以下指令你应该会看到和一个提示。 原文:How does blockchain really work? I built an app to show you.作者:Sean Han译者:JeLewine 根据维基百科,区块链是: 一个用于维护不断增长的记录列表的分布式数据库,我们称之为区块链。 这听...

    sanyang 评论0 收藏0

发表评论

0条评论

K_B_Z

|高级讲师

TA的文章

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