你必须知道的 7 个 JavaScript 数据结构
数据结构是许多公司最常考查的科目之一。它是 IT 行业的基础,广泛应用于人工智能、操作系统、图形等领域。
在这篇博文中,我将介绍每个 JS 开发人员都应该了解的七种最常用的 JavaScript 数据结构。
这篇博客文章将涵盖以下内容:-
- What are Data Structures?
- 7 most used data structures
- Arrays
- Stack
- Queues
- Linked List
- Trees
- Graphs
- Hashtable
什么是数据结构?
数据结构是一种存储和组织数据的方式,以便高效地使用数据。更准确地说,数据结构是指一组数据值、它们之间的关系,以及可以对它们执行的操作或功能Data structures= group of data values+allowed operations on that data
。
数据结构使我们能够管理和利用大型数据集,同时处理来自用户的多个请求,并加快数据处理速度。
1.) 数组
数组是最基本的数据结构。它是一组类型相似的元素,存储在连续的内存位置,每个单元都有一个对应的数字索引,用于选择其数据。与所有脚本语言一样,JavaScript 也具有动态数组,即其大小和数据类型均不预先确定。
数组字面量是创建 JavaScript 数组最简单的方法。
让我们看一个使用数组字面量创建数组的简单示例:
<script>
var users=["neha","ayushi","gauri"]; // creating an array
//iterate over an array
for (i=0;i<users.length;i++){
document.write(users[i] + ", ");
}
</script>
输出:- neha, ayushi, gauri
常见的 JavaScript 数组方法:
链表
链表是一种线性数据结构,其中元素不在连续的内存位置。它由一组节点组成,每个节点都有自己的数据和指向下一个节点的地址。在数组中,元素是有索引的,你可以立即找到一个元素,但在链表中,你必须从头部开始,一路查找,直到找到所需的元素。链表的优点是插入和删除比数组更容易,因为数组中的元素存储在连续的位置。此外,它的内存消耗也很高效,因为链表的大小可以根据我们的需求增加或缩小。
链表的基本操作
点击此处查看 JS 中链表的实现
堆
栈是一种遵循LIFO(后进先出)或FILO(先进后出)原则的线性数据结构。它只包含一个指针,即指向栈顶元素的栈顶指针。每当我们向栈中添加一个元素时,它都会被添加到栈顶;同样,每当我们从栈中删除一个元素时,它也会从栈顶删除。
在堆栈上实现的常见操作:-
在这里检查 JS 中堆栈的实现。
队列
队列是一种遵循FIFO(先进先出)原则的线性数据结构。它包含两个指针:1)前指针,2)后指针。前指针指向队列的起始元素,后指针指向队列的最后一个元素。队列实现的两个主要方法是入队和出队。入队是将元素添加到队列中的过程,出队是从队列中删除元素的过程。
基本操作:-
队列是允许以下操作的对象-
在这里检查 JS 中队列的实现。
树木
树是一种非线性的层次化数据结构,由节点通过边连接而成。每个节点包含一些数据以及与其他节点(可称为子节点)的链接。树的最顶层节点称为根节点。带有链接子节点的节点称为内部节点,而没有子节点的节点称为外部节点(叶节点)。
树有许多不同的类型:
1.) 二叉树
2.) 二叉搜索树
3.) AVL 树
4.) 平衡树
5.) 红黑树
6.) 2-3 树
7.) N 叉树 其中,
二叉树和二叉搜索树通常是最常用的。
基本术语
- 节点 =>节点是一个包含数据和指向其子节点的指针的实体。
- 边 =>任意两个节点之间的连接链接称为边。
- 根 =>它是树的最顶层节点。
- 父级 =>任何节点的前身节点称为父节点。
- 子节点 =>任何节点的后代节点称为子节点。
- 兄弟 =>属于同一父节点的节点称为兄弟节点。
- 叶子 =>没有子节点的节点称为叶节点。
- 内部节点 =>至少有一个子节点的节点称为内部节点。
- 度 =>节点的子节点总数称为该节点的度。
- 级别 =>从上到下的每个步骤称为树的级别。根节点位于级别 0,根节点的子节点位于级别 1,而位于级别 1 的节点的子节点位于级别 2,依此类推……
- 节点的高度 =>节点的高度是从节点到最深叶子的边数(即从节点到叶节点的最长路径)。
- 树的高度 =>树的高度是根节点的高度或最深节点的深度。
- 节点的深度 =>节点的深度是从根到节点的边数。
- 树的深度 =>树的深度是从根节点到叶节点的最长路径的总边数。
在这里检查 JS 中树的实现。
图表
图是一种常见的数据结构,由一组有限的节点和边组成。图更像一个网络。互连的对象由称为顶点的点表示,连接顶点的链接称为边。顶点类似于链表节点,而 (x,y) 对称为边,表示x顶点连接到y顶点。图可以用邻接矩阵或邻接表表示。
图是许多现实世界问题的终极抽象。图数据结构的一些最佳用例包括社交图谱 API(例如 LinkedIn、Facebook 等)、路径优化算法(例如 Google 地图)、Web 分析和科学计算。
有两种常见的图表类型:
- 无向图 =>在无向图中,边与方向无关。这意味着如果顶点X和Y之间存在一条边,那么该顶点既可以从Y遍历到X,也可以从X遍历到Y。
- 有向图 =>在有向图中,边与它们的方向相关联。这意味着如果顶点X和Y之间存在一条边,则顶点只能从X遍历到Y。这里,顶点 A 称为初始节点,顶点 B 称为终端节点。
基本术语
- 路径 =>路径表示两个顶点之间的边序列。
- 简单路径 =>简单路径是图中所有节点都不同的路径,但有一个例外0 =V N。
- 封闭路径 =>简单路径是初始节点与终端节点相同的路径。
- 循环 =>循环可以定义为除第一个和最后一个顶点之外没有重复的边或顶点的路径。
- 完整图 =>每个顶点都直接连接到所有其他顶点的图。
- 连通图 =>连通图的每对顶点之间都有一条路径
- 加权图 =>加权图将一个值(权重)与图中的每个边相关联。
- 循环 =>与相似端点相关的边可以称为循环。
- 度 =>图中顶点的度是与其相关的边的总数。
- 相邻节点(顶点)=>如果两个顶点通过相同的边连接,则称它们相邻。
图的基本操作
在这里检查 JS 中图表的实现。
哈希表
哈希表(也称为哈希表、哈希映射)是一种使用哈希算法以关联方式存储数据的数据结构。哈希算法是使用哈希函数将键和值映射到哈希表中的技术。这里的“键”是要搜索的字符串,“值”是与该键配对的数据。使用好的哈希函数可以提高哈希算法的效率。在哈希表中,无论数据大小如何,插入和搜索操作都非常快。哈希表由数组构建。
- 在学校/大学,每个学生都被分配一个唯一的学号,可用于检索有关他们的信息。
- 在图书馆里,每本书都有一个唯一的编号,可以用来确定有关这本书的信息,
基本操作
插入:在哈希表中插入一个元素。
删除:从哈希表中删除一个元素。
搜索:在哈希表中搜索一个元素。
在这里查看 JS 中哈希表的实现
关于数据结构的最终思考
对于许多开发者和程序员来说,数据结构对于顺利通过 JavaScript 编程面试至关重要。每种数据结构都有不同的应用和用途。因此,对数据结构有基本的了解是成为优秀程序员的关键第一步。
这篇博客只是粗略地介绍了 JavaScript 中的数据结构。如果你喜欢学习并觉得有用,请点赞分享,让更多人也能受益。🤝
感谢阅读😃
我愿意❤通过Twitter | LinkedIn | GitHub与您联系
如果您有任何疑问或反馈,请在评论部分告诉我。
资源
- https://www.educative.io/blog/javascript-data-structures
- https://blog.devmountain.com/what-you-should-know-about-data-structures/
- https://medium.com/siliconwat/data-structures-in-javascript-1b9aed0ea17c
- https://blog.bitsrc.io/data-structures-you-should-know-as-a-javascript-developer-9a35eb3b319c
查看GitHub 上的JavaScript 算法和数据结构仓库。它收集了用 ES6 JavaScript 实现的经典算法和数据结构,并附有解释以及进一步阅读和 YouTube 视频的链接。
文章来源:https://dev.to/nehasoni__/7-javascript-data-structs-you-must-know-57ah