计算机程序设计

JavaScript的数组和它的创作。 所有关于JavaScript数组

在这篇文章中,我们将着眼于JavaScript的阵列,其组件。 JavaScript是一种完美的面向场景的设计语言进行编程。 事实上,他意识到语言的ECMAScript(ECMA-262标准)。

Javascript的? 据,以便确定所述程序给所述受试者应用程序的路径用作嵌入式语言。 它可以在浏览器中发现:它是用来那里的脚本语言,让网页互动。

此产品的主要建筑特色是动态的,弱类型,这是第一次放电的对象avtoupravlenie存储器理想的编程功能。

事实上,在JavaScript中的影响不同的原因,是因为发展会产生类似于Java,但容易被程序员使用的语言。 顺便说一句,JavaScript语言不拥有,使得它从众多的web开发者使用的编程风格不同的公司或组织。

应当指出的是,JavaScript的 - 甲骨文公司集团的注册商标。

什么是数组?

称为阵列 的数据类型, 其存储编号的值。 每个这样的值被称为阵列的组成部分,并与该相关联的称为索引组件的数量。 的无类型JavaScript的阵列。 这意味着该固体部分可以具有任何类型,与属于同一阵列不同的部分,具有完全不同的类型。

此外,JavaScript的阵列是动态的,这是说,一个固定的大小不需要被声明。 随时添加新部件后。

雄厚的生产

使用JavaScript语言来创建阵列相当困难的。 有两种方法这一点。 第一种方法涉及生产使用文字阵列的 - 方括号,在其内部放置的项目的列表的,用逗号分开。

  • VAR空= []; //空数组;
  • VAR numers = [4,1,2,5]。 //数组五个数字组件;
  • VAR DIFF = [1.5,假,«文本“]; //阵列与不同类型的三个要素。

作为一项规则,不要求该值分别为简单(行号)。 它也可以是任何其他表达式,例如,对象的文字,其他功能和阵列。

创建一个数组设计者的第二种方法是调用阵列()。 要邀请他加入一个的三种方法:

  • 打电话给设计师不带参数的:var b - 新的Array()。 它提供了用于创建一个空数组等效的一个空的字面[]。
  • 设计者明确指定阵列组件的值n的:var B =新阵列(1,3,5,8,“线»,真)。 在这种情况下,设计者提出的参数,这些参数被转化为一个新的数组的组件的列表。 参数被写入到阵列是其中所指示的位置。
  • 定义范围进一步分配值。 这是通过指定的检测阵列括在括号中的数完成的:var B =新阵列(5)。 检测的该方法涉及分配阵列所需量的组分(其中的每一个被列为未定义)与演示分配值的可能性。 这种形式通常用于预分配的Javascript的数组,其长度是预先已知的。

记录,读取和添加阵列的细节

到达阵列的部件可以经由操作符[]。 顺便说一句,所有JavaScript中的组件,从零出发,进行了编号。 为了获得必要的元素,指示其在数量上 方括号中。 作为一般规则,项目可以改变的。 一个JavaScript添加到阵列中,就足够了分配一个新的值。

应当指出的是,在JavaScript数组可以存储任何数量的任何类型的元素。

所述阵列的长度

因此,我们知道的JavaScript。 在一般的阵列的长度是一个有趣的现象。 让我们看看它的更多细节。 所有的范围都使用阵列设计()构造并通过文字阵列检测具有特定长度属性,该属性节约退出元件的总数。 由于阵列可能是不确定的细节(未定义的指定),更精确的表达听起来:质量长度总是由一个比所述阵列部件的最大数目(索引)更大。 质量长度自动调节时,停留在新的细节的阵列的外观准确。

要显示阵列的最后一个部分,则可以使用长度属性。

最后的部分是一个指数小于阵列的大小。 在倒数计时后从头开始始终。 哦,这个JavaScript! 所述阵列的长度取决于元件的其具体数量。 因此,如果你不知道有多少是应该的,但你需要求助于数组的最后一个元素,就必须申请备案:v.length - 1。

迭代部件阵列

很多时候,length属性用于迭代循环中的部分的阵列上:

  • VAR水果= [«草莓”, “桃”, “苹果”, “香蕉”];
  • 为(VAR I = 0; I
  • 文件撰写(水果[I] +«...»)。

在这个例子中它看来组分连续布置并且与所述第一部分,其中包含索引从零开始。 如果不是这种情况下,调用该数组的每个元素之前,如果它被定义应该被检查。

循环有时也被用于初始化组件。

的增加和截断阵列

我不知道如何用语言JavaScript字符串到一个数组补充? 在使用数组的过程中,长度长度自动提高质量,这就是为什么我们要照顾它自己。 这是必要回顾一个细节 - length属性不适用于只读,但备案。 如果质量长度的属性值,其给出了电流的大小,阵列被减小到一个预定值。 未包含在索引,斜倚,以及它们的值的新范围内的任何组件都将丢失,即使你以后返回回长度 - 值无法恢复。

相当简单地清除阵列:foo.length = 0。

如果游程长度比它的电流值越大,在阵列的端部的质量将是新的,未鉴定的组件,这将增加它到所需的大小。

删除的细节的阵列

删除操作者指示数组未定义的成分,但它仍然在这种情况下存在。 如果你想使剩余的部分转移到空置的地方删除数组的元素的JavaScript,你需要使用的预测阵列的方法之一。 方法Array.shift()删除第一组分,弹出() - 终止组分和方法剪接() - 一个组件或任何范围阵列。

多维数组

看来,我们明白了一点, 什么样的JavaScript。 二维数组 - 这需要进一步考虑。 你还记得JavaScript数组可以包含其他项目的组成部分? 此功能用于生产多维阵列。 在数组的数组访问组件足以两次应用括号。

关联数组

现在我们学习如何商标使用JavaScript关联数组。 要做到这一点,我们需要寻找到理论:关联数组有时被称为哈希表。 多亏了他们,而不是索引行被应用。 使用让人想起使用简单的对象的属性的名称的这种结构,但在本实施例中,工作的以阵列形式的性能。 由于没有操纵JavaScript数组关联的方式,他们用少得多的频率比平常。 应当指出的是,他们仍然可以用于数据存储有用的,简化的部分,将被访问的存储。

输出数组

现在,我们将在JavaScript系统研究? 输出数组到对话框(在屏幕上),以及所述阵列元件的输出值。

如果程序要显示所有组件的值,则可以很方便地申请的说明。 有趣的是,用于在同一时间作为数组索引的部件使用可变计数器规则。

清洁的

为了过滤器阵列的JavaScript中,你需要重新设置它的长度:

  • VAR myArray的= [1,2,5,23];
  • myArray.length = 0。

下面显示的目标明确()的实施,在一个框架,JavaScript的原型:

  • 明确:功能(){;
  • this.length = 0;
  • 返回此;
  • }。

添加和删除组件

好吧,我们继续进一步探索这个令人兴奋的JavaScript语言。 数组元素尽可能和除去,并添加相同的方式,其它的目的的常规性能。 但也有一些差异:将数字属性质量长度可以改变,但在特性长度的变形可被消除数值质量。 原则上,在阵列安装算法如下:

  • 当加入我的数字未知属性,如果长度是等于或小于I,长度被确定为I + 1。
  • 当你改变质量的长度,请执行以下步骤:如果指定的值小于零,则引发RangeError。 消除了所有的数值质量指标中等于新的长度,和大于。

实际上移除JavaScript数组元素是简单的。 毕竟,即使设置长度,你需要从它删除“额外”的组成部分。 它遵循从这个清洗选项阵列。 如果变量被分配一个新的空数组,无论出于何种原因,不满意,并且需要重置的电流,它的质量是足够的长度来分配零值。

不印字方法,移位,流行音乐和推

尽管数组的组件手动更改,许多建议使用这种内置的方法。 正是这种细微差别确保质量的正确值,并在阵列穿过缺乏长度。 顺便说一句,正确长度的质量将对应于部件的数量。

该过程移动到推阵列传送物品的端部。 弹回过程给人的最后一个组件并将其删除。

一般来说,在Internet Explorer中的第八个版本下不印字可以返回不确定的,在其他浏览器 - 长度的新值。 所以从不印字的返回值最好不要希望。

份的在阵列的中间添加和消除

如果你想删除的JavaScript数组,你需要采取? 据了解,该方法具有签名拼接Array.prototype.splice。

他从阵列deleteCount成分提取,索引start开始。 如果传递两个以上的参数,阵列中的所有后续参数被安排在地方清算的。 如果start为负,指数在其恢复撤出将等于长度+启动。 返回到远程的元件的阵列进行。

事实上,使用方法的拼接,可以从阵列中删除组件,或阵列中的任意位置添加任意数量。

在最简单的实施例中,如果有必要与索引移除分量i,阵列需要请求拼接方法与参数i和1。

原则上,在拼接方法的第二个选项是不是强制性的,但功能与一个参数的行为对每个浏览器是不同的。

例如,在Firefox,歌剧中的最后一个变型中,该阵列的端部之前,所有的细节将在Safari和铬除去。

没有单一的分量被消除在IE中。 第一变化是不可能预测戏曲的行为 - 将被移除与索引开始一个项目 - 1。因此,总是需要在该方法中发送至少两种组分。

按键

当然,学习JavaScript,关联数组,如前面提到的,你应该也不容忽视。 这是的信息(该接口到数据存储器),其允许保存一对的形式“(键,值)”,并加入双支撑,以及删除和搜索键对的操作的抽象视图:

- FIND(键)。

- INSERT(值,键)。

- 删除(键)。

据认为,在一个关联阵列不能保存两对具有类似密钥。 在几个K + VV的是带有密码K相关联的值。 语义和这里用这样的阵列的各种实施方式的上述操作可以是不同的。

因此,查找操作(键)返回与给定的键,或者一个特定对象UNDEF相关联的值,这意味着该值与给定的键,离线相关联。 其他两项操作不返回(除有关操作是否成功的数据)。

一般地,在界面方面,关联数组是方便的考虑作为一个简单的阵列,作为索引可用于不仅整数,而且其他类型的值 - 例如,一个字符串。

顺便说一下,这种阵列的支持被视为有许多高级编程语言如PHP,Perl中,红宝石,巨蟒,TCL,JavaScript和他人。 对于没有内置的工具与关联数组工作语言,在库的形式创建变现的数量巨大。

关联阵列的例子可以作为电话目录。 在本实施例中,该值被设置为“F. IO + E”,而关键 - 的电话号码。 一个电话号码是一个高手,但一个人可以拥有多个号码。

相关扩展

应当指出的是,最知名的扩展包括以下内容:

  • EACH - «步行»所有保存对。
  • CLEAR - 删除所有条目。
  • MIN - 寻找最低的键值对。
  • MAX - 查找具有最大的键值对。

在后两种情况下,你需要在按键上显示的比较效应。

关联数组的实现

有关联数组的许多不同的实现。 最常见的实现可以基于一个简单的数组,其成分是双(值键)上。 为了加快搜索功能,您可以通过一个重要的发现安排阵列的组成部分,并使用实现二进制搜索。 但是,它会增加的时候添加新的对所需的金额,将需要“推”中出现的空单元格收拾新纪录的阵列组件。

最著名的实现,根据不同的搜索树。 例如,在典型的阅读室STL C ++语言拖车地图的黑色和桃花心木的基础上实现。 在Ruby中,款式,TCL,Python使用一种类型的哈希表。 还有其他的实现。

一般来说,每个实现都有自己的优点和缺点。 重要的是,所有这三个业务都应验平均,而在最糟糕的时期的细微差别约(日志n),其中N - 目前一些保帕。 对于协同搜索树(包括黑,红树林),满足此条件。

已知的是,在基于哈希表实现方式中,平均时间被定义为D(1),这比在基于所述搜索树的操作更好。 当然,这并不能保证独立运营的高速性能:在最坏的情况下,插入的时间被指定为O(N)。 为当占空比达到最高点进行长时间INSERT过程,且有以重构哈希表索引的需要。

顺便说一句,这些语句哈希糟糕了,在此基础上就不可能进行快速额外的动作最大,最小和算法来搜索所有保存降序或升序键对。

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 zhcn.atomiyme.com. Theme powered by WordPress.