数据结构教程系列01:JavaScript数组教程

作者 : IT 大叔 本文共5363个字,预计阅读时间需要14分钟 发布时间: 2020-09-9

数据结构教程系列

数据结构教程系列01:JavaScript数组教程

数据结构教程系列02:使用Java深入研究树

数据结构教程系列03:如何在Java中使用链接列表

数据结构教程系列04:在JavaScript中引入图

数据结构教程系列05:在JavaScript中实现哈希表

数据结构教程系列06:如何在Java中使用堆栈和队列

数据结构是编程和编码采访的重要组成部分。这些技能证明了您解决模棱两可的问题,复杂思考和识别代码中模式的能力。数据结构对于组织数据很有用,并且对于将算法应用于代码非常有必要。数据结构越整洁和效率越高,程序的整体性能就越好。

对于任何软件开发人员来说,数组都是重要的数据结构。这种组织数据的方式使我们能够使用索引或键来存储元素。今天,我们将深入研究阵列。最后,您将了解如何以各种编程语言创建和使用数组。我们将介绍:

  • 什么是数组?
  • 如何创建数组
  • 使用和修改数组
  • 数组常见的面试问题
  • 包装和资源

什么是数组?

甲数据结构是在计算机中组织数据的方法,因此它可以在程序中有效地使用。数组是一种数据结构,可以用来存储要在程序中使用的某些数据。数组是由逗号分隔的各个值的集合,每个值都有自己的索引/位置。这个集合可以是任何东西:数字,对象,更多数组等。在数组中,称为元素的值存储在连续的内存位置中。这意味着所有元素都按顺序排列,并且它们共享公共边界。数组中存储的元素数称为数组的length

数组是存储和访问值序列或存储具有相似元素的数据集合的最有效方法之一。数组有助于存储原本会很麻烦的数据。假设您有一家服装店,您需要盘点十天内售出的商品数量。我们还假设您需要访问和存储这些值的平均值和中位数。如果没有数组,则必须创建许多不同的变量,这些变量会占用大量空间并浪费时间。随着天数的增加,这可能会使您的代码真正混乱。相反,我们可以使用数组来存储和操作该数据!

数组的基本结构

数组中元素的索引用于标识其位置。例如,如果我们的数组包含五个数字:67、12、90、76、19、38、7。67的索引为0,这就是它在数组中的位置。索引12(第二个元素)为1,依此类推。索引始终从零开始,然后增加一。让我们看一个视觉示例。

数据结构教程系列01:JavaScript数组教程插图

上图显示了元素A,B,C和D的数组及其对应的索引。因为有四个元素,所以数组长度将为四个。元素下方的数字表示字母在计算机内存中的位置。现在,让我们来看一个使用JavaScript代码的一小部分数字的示例。在这里,您可以看到方括号之间的元素[]。测验自己:每个元素的索引是什么?

var numbers = [67, 12, 90, 76, 19, 28, 7];

阵列的优缺点

由于其基本组织,每个数据结构都有其优点和缺点。某些数据结构在某些用途上要比其他数据结构更好,因此了解哪些阵列性能良好以及哪些阵列最不适合执行非常重要。

优点

  • 存储相同类型的相似数据。
  • 当您已经知道所有元素的数量时存储数据
  • 实现其他数据结构,例如树,链接列表,图形,堆栈等。
  • 将元素存储在数组的不同维度中:二维或多维。
  • 数组在每个元素的连续内存位置分配内存。这样可以避免内存溢出。
  • 与其他数据结构相比,数组中的迭代运行得更快。
  • 声明后,数组可以多次重用。这样可以提高代码的可读性。

缺点

  • 如果要使用数组,则必须事先知道要存储的元素数。声明新的/额外的值是不可能的。
  • 在声明时分配给数组的内存不能增加或减少。
  • 分配过多的内存可能会浪费内存空间。
  • 删除和插入元素的成本很高,因为数组的元素存储在连续的内存位置中。
  • 错误出现在运行时而不是编译时,因为数组在编译时不会验证索引。

数组的用途

现在我们知道了数组的外观以及它们的优点,但是您实际上可以使用数组做什么呢?让我们来看看。数组可以:

  • 复制和克隆元素
  • 插入和删除元素
  • 搜索和排序元素

数组使您可以使用一个名称来维护多个变量名称和大数据。这消除了使用多个变量的困惑,并提高了代码的可读性。您还可以使用二维和多维数组执行不同的矩阵运算。数组可用于对数据元素进行排序。气泡排序,插入排序和选择排序等不同的排序技术使用数组轻松存储和排序元素。数组也可以用于CPU调度。它允许程序中的一个进程在执行另一进程时暂停使用CPU。

数组入门

编写或声明数组因语言而异,但是所有这些不同的变体所具有的一个共同点是,数组始终保存数据的集合。在本节中,我们将研究如何在JavaScript,Java,C ++和Python中声明数组。在每个示例中,我们将使用一个高中生的测试成绩作为用例。假设我们的学生Tonia在六个科目中分别获得了78、90、62、88、93和50分。要在程序中使用数组,必须声明一个变量以引用该数组,然后创建该数组的元素。现在,让我们用不同的语言构建这个数组!

在JavaScript中声明数组

在JavaScript中,创建数组的语法为:

var array_name = [item1, item2, ...];

如果我们要创建一个包含Tonia考试成绩的数组,可以将数组命名为test_scores,然后将所有元素放在方括号内,如下所示:

var test_scores = [78, 90, 62, 88, 93, 50];
console.log(my_array)

在Java中声明数组

在Java中,语法略有不同。首先,您必须声明变量类型,然后使用数组文字插入要存储的值。如果我们想创建一个Tonia的主题数组,它将看起来像这样:

String[] subjects;
 
String[] subjects = {"Create writing",
                     "Marketing",
                     "Japanese",
                     "Calculus",
                     "Computer science",
                     "Physics"},
 

整数数组(这些主题的相应分数)将如下所示:

int[] testScores = {78, 90, 62, 88, 93, 50};

在C ++中声明数组

C ++中的数组比JavaScript更类似于Java。在C ++中,您可以通过创建数组变量并初始化元素来创建数组,如下所示:

int testScores[] = {78, 90, 62, 88, 93, 50};

在这里,编译器将创建一个大小为6的数组,其中包含Tonia的所有分数。

在Python中声明数组

Python没有对数组的内置支持,因此我们使用列表来创建它们。首先,我们创建数组变量名称,然后初始化所需的所有元素,如下所示:

test_scores = [78, 90, 62, 88, 93, 50]

使用数组文字和数组构造函数

重要的是要注意,还有另一种常用的方式来创建流行语言数组。您可以使用数组文字,就像我们上面在JavaScript中使用数组声明所显示的那样,但是我们可以使用数组构造函数。该Array()构造函数用于创建Array对象。构造函数是一个函数,用于创建称为的类的实例object。使用数组构造函数,我们可以有多个参数。要使用数组构造函数,您可以在内置类的帮助下声明数组,并通过将其传递到方括号中来初始化您的元素。在JavaScript中,它看起来像这样:

var testScores = new Array(78, 90, 62, 88, 93, 50);
console.log(testScores);

无论您使用上述方法声明数组的方式如何,它都可以工作。如果console.log这两段代码分开,您将获得相同的数组。

使用和修改数组

现在我们知道如何创建数组,我们需要学习如何应用操作和函数以使其对我们的程序有用。我们已经存储了数据,但是下一步该怎么做?好,让我们看一下应用于大多数计算机程序的数组的一些常见用法和修改。

访问数组中的值

如果要访问阵列,则首先需要知道该阵列的位置。这就是为什么了解索引如何工作很重要的原因。例如,如果我们需要访问Tonia的Computer Science分数(最高分数93)并将其存储在变量中highestScore,我们首先需要知道其位置。如果我们从左边开始,从零开始计数,则索引93将为4。我们的代码如下所示:

我们console.loghighestScore的确得到93,这是在指数4.数组访问元素归结为了解索引。

修改数组

那么,如果我们想更改分数的值怎么办?假设最后一个分数计算错误,而Tonia实际上得到了71分。要修改最后一个元素,我们找到要修改的元素的索引,并将其设置为与我们要交换的新值相等。在JavaScript中,如下所示:

在这里,我们发现需要更改的元素的索引为5。我们对此进行了安慰,然后将其设置为等于新值。现在,如果您console.log是最后一行,您将获得正确的考试分数71。

插入和删除值

假设Tonia参加了一门额外的会计课程,我们想将该分数添加到testScores数组中。要插入元素,可以使用两种方法。如果要将新元素添加到数组的末尾,则可以使用该push()方法。让我们Accounting在数组末尾添加她班级的分数。您可以像这样在JavaScript中进行操作:

如我们所见,这会将新分数添加到数组的末尾,并将索引增加1。

您也可以使用unshift()方法将新元素添加到数组的开头。假设Tonia还有另外两个班,成绩分别为74和58,我们希望他们排在我们前面。让我们在下面看看我们该怎么做。

假设我们想在我们的中间添加一个元素。要在数组中除开头或结尾之外的任何位置插入新元素,可以使用splice()方法。在JavaScript中,语法如下:

array.splice(index, howmany, item1 ..., itemX);

在这里,索引是指您要添加或删除元素的位置。howmany指您需要删除的项目数,它是可选的。最后一部分item1, ..., itemX定义了要添加到数组中的新项目。它们也是可选的。

另一方面,删除元素可以使用多种方法。第一个是pop()方法。此方法使您可以删除数组中的最后一个元素。如果您想删除最后的测试成绩,可以将其与JavaScript一起使用:

此方法通过附加pop();到数组变量而起作用。如果console.log这样做,您会注意到最后一个元素已消失。与该unshift()方法相比,可以使用该shift()方法删除数组的第一个元素。在下面的示例中,我们将从测试分数数组中删除第一个元素78,并将所有其余元素移至较低的索引。这是用JavaScript完成的方法。

函数就像操作我们数据的命令或动作。假设我们要对Tonia的得分应用命令。如果要将数组传递给程序中的函数,则可以使用传播运算符。这是您可以代替使用的新JavaScript功能apply()。传播运算符使您可以访问可迭代对象的元素。由于数组是一种可以按顺序遍历的对象,因此在这里是一个不错的选择。如果我们想编写一个使用Tonia分数的函数并将一个动作应用于它们,则必须将testScores数组作为参数传递给该函数。我们的语法如下所示:

ourFunction(s1, s2, s3, s4, s5, s6) {
// do something to her scores here
}
 
let scores = [78, 90, 62, 88, 93, 50];
ourfunction)...scores);

在这里,我们编写了一个占位符函数,该函数将获取Tonia的六个分数并对其进行处理。我们在最后一行中创建一个新变量(数组)来保存分数,并将数组传递给函数。

打印数组

要使用JavaScript打印数组,可以使用内置array.values()函数。这将打印给定数组中的所有元素。如果要打印出testScores我们一直在使用的数组中的所有元素,它将看起来像这样:

var testScores = [78, 90, 62, 88, 93, 50];
testScores.values();

现在,我们知道了如何创建,修改,删除值以及将函数应用于数据的数组。做得好!

数组常见的面试问题

有关数据结构的问题对于采访编码非常普遍。由于数组在计算机程序中非常流行,因此您在任何编码访谈中都可能会遇到有关数组的编码问题。以下是一些有关数组的常见JavaScript采访问题,这些问题证明了您对数组的掌握。

  • 查找数组的长度
  • 将阵列反转到位
  • 找到最小和最大的数字
  • 在适当的位置删除阵列的所有重复项
  • 找出最长的连续元素序列的长度
  • 使用数组解构删除前两个元素
  • 编写确定对象是否为数组的函数
  • 给定一个数组coins,编写一个函数来计算amount使用这些代币的方法数量
  • 和更多

包装和资源

做得好!现在,您已经完成了JavaScript数组的Data Structures 101之旅。您正在掌握阵列的方式上。关于数组还有很多要学习的知识,因此请继续阅读,练习和学习课程以帮助您学习。学习数据结构的最佳方法之一是动手实践。通过处理实际的编码问题或项目,您将快速了解数组如何工作以及它们如何与其他数据结构集成。

免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 数据结构教程系列01:JavaScript数组教程

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论