JavaScript的数组


  Share  
|


由于对象是收藏的性质与每个属性有自己的名称和值,阵列实际上是JavaScript对象。 每个财产的一个数组是一个组成部分,每个元素都可以被分配一个值。 方法之一认为是一个数组作为一个收集编号的变数。

数组在JavaScript中有下列一般格式指派的值内容:

  sampleArr [ 0 ] = 1 ;  
  sampleArr [ 1 ] = “冰淇淋” ;  
  sampleArr [ 2 ] = 55 * ( 7 + α ) ;  
  sampleArr [ 3 ] = shootTheMoon ( 73 ) ;  
  sampleArr [ 4 ] = otherArr [ 7 ] ; 

  sampleArr =新的Array ( 1 , “冰淇淋” , ( 55 * ( 7 + α ) ) , shootTheMoon ( 73 ) ,  
  otherArr [ 17 ] ) ; 

或者,在JavaScript 1.2或更新版本:

  sampleArr = [ 1 , “冰淇淋” , ( 55 * ( 7 + α ) ) , shootTheMoon ( 73岁) , otherArr [ 17 ] ] ; 

所有这三个阵列是相同的,采用不同的方法进行数据的任务。 第二两种方法显示阵列将更多的对象,而第一种方法显示可变的特征,阵列。

在JavaScript中,数组元素0开始,可以按顺序编号或nonsequentially 。 在第二个前两个例子,第一个元素是0 ,和其他数据以逗号分隔的编号顺序。 然而,你可以有以下数据转让的一个数组:

  alphaArr [ 0 ] = “乌诺” ;  
  alphaArr [ 7 ] = “多” ;  
  alphaArr [ 345 ] = “三” ; 

通常情况下,阵列的编号顺序,使数据可以添加和提取使用的循环。 然而,一个数组元素都可以被称为提出的任何命令和使用就像一个变数。

这些数据和数据类型,可以分配到一个数组元素都是相同的数据和数据类型,您可以指派给变数。 你也将发现,您可以指派对象相同的种类的数据。 (请记住,一个数组是一个对象,因为它是由超过一个单一的财产。 )

建立一个数组

创建阵列使用的构造,就像其他物体。 阵列( )构造函数使用的格式如下:

 无功部分=新的Array ( ) ; 

现在, 部分是一个数组对象,您可以添加的数据格式如下:

 部分[ 0 ] = “螺栓” ;  
 部分[ 1 ] = “胡说八道” ; 

如同宣布一个变量,你不必输入数据后宣布阵列,但你可以。 例如,您可能会宣布,并确定密集阵列使用阵列( )构造:

 无功部分=新的Array ( “螺栓” , “坚果” , “洗衣机” , “螺丝钉” ) ; 

您还可以创建一个数组使用一个层面的论点。 如果你知道未来的时间有多少因素是在您的阵列,您可以申报,并设定一个层面它在同一时间。 (在某些语言,尤其是旧的,你都必须包括一个维数组保留记忆的阵列。 )例如,如果您要创建一个数组美国参议院和你知道你只有100名参议员,你可以申报和层面的阵列如下:

 叶参议员=新阵( 100 ) ; 

一旦申报和尺度,您可以新增100个元素,但第一次参议员将是这样:

 参议员[ 0 ] 

最后将是这样:

 参议员[ 99 ] 

您仍然可以获得100个元素,但你必须从0而不是1 。

声明使用一个层面的论点是规则的例外,第一个数据值在一个密集的阵列(在其中的数据载于括号内)被认为是元素0 。 0元的阵列将是第一个数据转让后申报。 例如,下面的第一个层面声明数组5 ,然后进入第一个数组元素( 0 ) 7在下一行:

 叶catWeights =新的阵列( 5 ) ;  
  catWeights ( 7,15,34,52,60 ) ; 

数字数据为5不是一个价值的任何数组元素。 这是数组的长度,与内容从0-4 。

备注

我使用的标记<script language="JavaScript">没有具体的版本号的JavaScript 。 你不需要指定的版本编号,以获取最新版本的JavaScript支持您的浏览器。 当使用一个层面的论点与Netscape Navigator中4 ( NN4 ) ,后来,你会碰到一个错误如果您指定<script language="JavaScript1.2">然后尝试维阵列。 NN4 +对待的声明与维值作为第一个值数组而不是数组的长度。 例如,尝试下面的脚本:

 <html>  
 的<head>  
  <script language="JavaScript1.2">  
 变种试验新阵= ( 23 )  
 文件撰写( test.length ) ;  
  “ /脚本”  
  “ /头”  
 <body>  
  “ /体重”  
  “ /的HTML ” 

当您运行该脚本使用NN4或更新版本, 出现在屏幕上。 如果您删除1.2属性<script>标记 ,返回的值是23 ,正确的长度。 由于运行的JavaScript 1.5刚刚花花公子 Netscape Navigator 6日没有具体的版本号的<script>标记 ,以及最新版本的Internet Explorer也运行良好没有具体的版本号,我宁愿让所有的版本号码作为一种习惯。 这样,我可避免错误和跨度更JavaScript和浏览器的版本。

最后的方式宣布了一系列使用JavaScript 1.2或更高要求的一系列文字。 该声明使用括号不是括号内,并不需要阵列( )构造。 数组对象的名字是简单地宣布指派给它的价值在方括号内,如下面的脚本显示:

 <html>  
 的<head>  
  <script language="JavaScript">  
 变种25,823 = [ “赞成” , “没有” , “也许” ] ;  
 文件撰写( 25,823 [ 2 ] ) ;  
  “ /脚本”  
  “ /头”  
  <body bgcolor=#face00>  
  “ /体重”  
  “ /的HTML ” 

字面阵列25,823看起来几乎像一个变量的定义,如果不是因为方括号内的名单,价值观。 用一个数组字面节省了一对夫妇的步骤,因为没有使用构造,但旧版本的浏览器(前支持的JavaScript 1.2 )将不明白这是一个数组。

阵列属性和方法

作为一个对象,数组有一个单一的财产长度和几种方法。 然而, Netscape Navigator中4介绍 5种方法, Array.pop ( ) , Array.push ( ) , Array.shift ( ) , Array.unshift ( )和Array.splice ( ) ,不支持通过Internet Explorer或EMCA - 262标准。 为了避免问题,但必须具有包容性,我已经把NN4 +阵列方法一节,提醒您这样一个事实,即IE浏览器的用户将无法剖析正确。 像所有的JavaScript功能不支持EMCA标准,我建议不要使用这些方法用于创建网站,预计将有观众使用两个主要的浏览器。

数组长度

在单一阵列财产长度传回的一些内容阵列。 当使用一个循环,测试条件的可循环数组的长度,使你不必使用一个不变的价值的考验。 格式如下:

 Array.length 

该财产被轻易地传递给一个变量,如下面的示例显示:

 无功狗=新的Array ( “猎兔犬” , “小猎犬” , “牧羊犬” , “傻子” ) ;  
 叶dogTail = dogs.length ; 

变量dogTail将有4长度,因为四个要素构成的阵列。 长度财产未提及的字符数构成元素的阵列,但它指的是一些内容本身。 因此,以下数组长度2 ,即使多个字符用比第一个例子,长度为4 :

 无功狗=新的阵列( “大瑞士山地犬” , “爱尔兰猎狼犬” ) ; 
Concatenating元素的数组:加入( ) , toString ( )和concat ( )

Array.join ( )方法将所有的价值观中的所有元素的数组,并创建一个大的字符串。 例如,尝试了以下脚本:

joinArray.html
 <html>  
 的<head>  
  <script language="JavaScript">  
 叶树木=新的Array ( “榆树” , “松树” , “橡树” ) ;  
 叶bigBush = trees.join ( ) ;  
 文件撰写( bigBush ) ;  
  “ /脚本”  
  “ /头”  
  <body bgcolor=#ace007>  
  “ /体重”  
  “ /的HTML ” 

结果是内容的阵列减去引号,表明您榆树,松树,橡树。

Array.join ( )方法接受一个论点,即作为一个分离器。 无论你在加入( )括号内引号取代逗号。 举例来说,改变这一行:

 叶bigBush = trees.join ( ) ; 

 叶bigBush = trees.join ( “和” ) ; 

然后,启动脚本再次不同的结果。 第二个结果是榆树和松树和橡树

一个旧的方法从JavaScript的1.1类似的Array.join ( )方法Array.toString ( ) 。toString ( )方法产生相同的结果作为加入( ) ,但是你不能指定连接的字符之间的内容可以与加入( ) 。

第三种方法用于concatenating字符串数组元素是Array.concat ( ) 。 不仅concat ( )方法加入现有的所有内容,但它也增加了要素concat ( )的论点。 例如,通过改变joinArray.html脚本略有下降,你可以看到它是怎么做到的。

concatArray.html
 <html>  
 的<head>  
  <script language="JavaScript">  
 叶树木=新的Array ( “榆树” , “松树” , “橡树” ) ;  
 叶biggerBush = trees.concat ( “枫叶” , “梧桐” ) ;  
 叶bigBush = trees.join ( ) ;  
 文件撰写( biggerBush ) ;  
 警报( bigBush ) ;  
  “ /脚本”  
  “ /头”  
  <body bgcolor=#ace007>  
  “ /体重”  
  “ /的HTML ” 

一个非常重要的一部分, concatArray.html脚本是,你可以看到, Array.concat ( )方法不会改变内容的阵列。 阵列命名为树木仍只有3个要素。 这是证明了一个事实,即警示讯息显示,只有三个要素,即使可变bigBush被界定后, biggerBush变量的定义和说,枫树和梧桐数据的组合。 要添加元素的数组,你分配新的价值观,命名内容。 例如,包括枫树和梧桐数据阵列,你可以写这篇文章:

 树木[ 3 ] = “枫叶” ; / /第四个因素是三自第一次是0  
 树木[ 4 ] = “梧桐” ; 
该命令改变一个阵列:排序( )和反向( )

两种方法可改变秩序的数组元素。 第一类型的字符串数组元素按字母顺序排列,第二次推翻了他们的秩序。

Array.sort ( )方法非常简单,特别是当使用字符串。 在进入所有字串阵列中,您只需输入名称的阵列和方法,以及一系列命令按字母顺序排列。 下面的例子显示了如何排序( )方法,以及如何数组元素的提取与环发言。

sortArray.html
 <html>  
 的<head>  
  <script language="JavaScript">  
 叶动物园=新的Array ( “斑马” , “狮子” , “大猩猩” , “小虎” ) ;  
  zoo.sort ( ) ;  
 叶newZoo = “ ” ;  
 为(无功反= 0 ;反“ zoo.length ;反+ + ) ( 
  newZoo + = (动物园[反] + “ <br> ” ) ;  
  )  
 文件撰写( “ <p>动物<p>字母” + newZoo ) ;  
  “ /脚本”  
  “ /头”  
  <body bgcolor="lightsteelblue">  
  “ /体重”  
  “ /的HTML ” 

所有的价值观都被排列在字母顺序排列。

类人猿

石狮

斑马

订购名单的任何区别,您将发现Array.sort ( )方法的方便工具。

Array.reverse ( )方法简单地颠倒了顺序中的数据阵列。 第一个因素成为最后一个元素,以及其他一切阵列中被推翻的。 例如,如下:

 叶majorCities =新的阵列( “东京” , “洛杉矶” , “巴黎” , “北京” , “布卢姆菲尔德” )  
  marjorCities.reverse ( ) ; 

这将返回:

 布卢姆菲尔德,北京,巴黎,洛杉矶,东京 

通过使用Array.sort ( )和Array.reverse ( )的演唱会,您可以变更升降命令的排序名单。

提取子阵:片( )

要指定一个子,使用Array.slice ( ) 。 一般形式的使用片( )是所示:

  ArrayName.slice (开始,结束) 

  ArrayName.slice (开始完) 

例如,如果您有这些声明:

 电脑= [ “戴尔” , “网关” , “苹果” , “ IBM公司” , “惠普公司” ] ;  
  computer.slice ( 2,4 ) ; 

您将返回

 苹果, IBM 

用一个单一的论点的因素考虑从论点的结尾阵列所界定的说法。 例如:

  computer.slice ( 2 ) ; 

将返回

 苹果, IBM ,惠普, 

负数构成了最后类型的论点用于Array.slice ( )方法。 负价值始于去年要素阵列-1 ,然后计数落后走向的第一要素。 例如,声明,例如,在本节中:

  computer.slice ( -1 ) 

返回此:

 惠普 

不同的是前瞻性计数片开头的0 ,最后一个元素的数组被确定为-1使用片( )方法,一个数组。

导航4核心阵列方法:弹出( ) ,推( ) ,移( ) , unshift ( ) ,剪接( )

这最后的一套方法增加了大量的实用与阵列,您可以执行堆栈类似业务的阵列。 如果你曾经在书面程序第四或书面代码为Adobe的PostScript ,你已经同栈, 弹出( ) ,推动( )很熟悉。 每五是简要介绍了简短说明,并根据下列单一例如:

 叶stackWork =新的Array ( “莱尼” , “哈罗德” , “玛丽” , “让” , “萨尔” ) ; 

Array.pop ( )删除最后一个元素的数组,并返回它。

stackWork.pop ( ) ;返回萨尔 ,并删除它从阵列。 如果第二次相同的声明,提出了下一行,这将返回法国

Array.push ( )增加值的结尾阵列(上方的堆栈)和叶在那儿。 通过添加下面一行,字符串迪莉娅将成为价值到一个新的最后一个元素添加到阵列的推进( )方法

  stackWork.push ( “迪莉娅” ) ; 

弹出( )操作 ,这将是第一个关闭(后进先出,最后,首先关闭) 。

Array.shift ( )删除第一个元素的阵列,并传回它。 举例来说,这将返回莱尼 ,将其从阵列,并把其余部分的左侧:

  stackWork.shift ( ) ; 

0元将成为哈罗德

Array.unshift ( )是类似推( )方法 ,但新的元素是放在前面的阵列(底部的堆栈) 。 如果您输入下列命令,第一个元素(元素0 )中的阵列将有价值的威利莱尼的价值将转移到右转入要素1 ,所以对整个数组:

  stackWork.unshift ( “威利” ) ; 

最后, Array.splice ( )是一种用来插入,删除和替代值的数组元素。 该方法有三个论点, 开始,删除和数据。 的起始位置指定新值(数据)是在插入和删除开始。 如果没有删除的指定, 剪接( )方法的效果是,插入一个要素和价值到一个数组。 例如,下面的说明如何插入价值弗雷德进入第二个因素,使第一因为它是和其他地方转移的权利:

  stackWork.splice ( 1,0 , “弗雷德” ) ; 

剪接( )方法可以让你插入的内容,删除一个或多个元素,或改变价值的数组元素。 您可能会发现,这些职能不工作的一些旧版本的浏览器,但IE5 +和NN4 +工作以及他们。

文章提出的乔治Freedrich

Share  

© 2005-2010 E-articles.info All Rights Reserved - Terms and conditions