`

array的理解

阅读更多

数组有四种定义的方式

使用构造函数:
var a = new Array();
var b = new Array(8);
var c = new Array("first", "second", "third");
或者数组直接量:
var d = ["first", "second", "third"];

属性

Array只有一个属性,就是length,length表示的是数组所占内存空间的数目,而不仅仅是数组中元素的个数,在刚才定义的数组中,b.length的值为8

< script >
var a = new Array ( " first " , " second " , " third " )
a [ 48 ] = " 12 "
document . write ( a . length )
//显示的结果是49
<
/ script>

数组的length属性是可写的,这是一个非常有意思的属性,我们可以通过这种方法来截取数组

< script >
var a = new Array ( " first " , " second " , " third " )
delete a [ 1 ]
document . write ( a . length )
//显示的结果是3,说明即使删除也无法改变数组的长度
var a = new Array ( " first " , " second " , " third " )
a . length = 1
document . write ( a . length )
//显示的结果是1,说明只剩下一个元素了
<
/ script>

方法

这里并没有包括IE和FF并不兼容的一些方法:
toString():把数组转换成一个字符串
toLocaleString():把数组转换成一个字符串
join():把数组转换成一个用符号连接的字符串
shift():将数组头部的一个元素移出
unshift():在数组的头部插入一个元素
pop():从数组尾部删除一个元素
push():把一个元素添加到数组的尾部
concat():给数组添加元素
slice():返回数组的部分
reverse():将数组反向排序
sort():对数组进行排序操作
splice():插入、删除或者替换一个数组元素

toString()方法,toLocaleString()方法的作用类似,FF下的作用是完全相同的,IE的话如果元素是字符串,会在“,”后 面加上一个空格,如果元素是数字,会扩展到两位小数,两者都会改变字符串的length属性,所以考虑到兼容性,尽量不要使用 toLocaleString()方法。

< script >
var a = new Array ( 1 , 2 , 3 , [ 4 , 5 , [ 6 , 7 ]])
var b = a . toString () //b为字符串形式的 "1, 2, 3, 4, 5, 6, 7"
var c = new Array ( 1 , 2 , 3 , [ 4 , 5 , [ 6 , 7 ]])
var d = c . toLocaleString () //d为字符串形式的 "1, 2, 3, 4, 5, 6, 7"
//toString()方法和toLocaleString()方法都可以拆解多维数组
<
/ script>

join()方法将数组中的所有元素转换成字符串,然后连接起来,这刚好和String的split()方法是一个相反的操作。join()默认是使用“,”作为分隔符,当然你也可以在方法中指定分隔符

< script >
var a = new Array ( " first " , " second " , " third " )
var s = a . join ( " ... " )
document . write ( s )
//显示的结果是“first...second...third”
<
/ script>

pop()方法可以从数组尾部删除若干个元素,push()方法把一个元素添加到数组的尾部,这两个方法刚好是两个相反的操作。两个都是对原来的数组进行操作,但是要注意push()方法返回的是新的数组的长度,而pop()方法则返回被删去的那个元素。

< script >
var a = new Array ( 1 , 2 , 3 )
var b = a . push ( 4 , 5 , [ 6 , 7 ]) //a为[1, 2, 3, 4, 5, [6, 7]]  b为6  注意push()方法不会帮你打开一个数组
var c = new Array ( 1 , 2 , 3 , 4 , " first " )
var d = c . pop () //c为[1, 2, 3, 4]  d为字符串形式的"first"
<
/ script>

shift()方法可以从数组头部删除一个元素,unshift()方法把若干元素添加到数组的头部,这两个方法刚好是两个相反的操作。两个都是对 原来的数组进行操作,但是要注意unshift()方法返回的是新的数组的长度,而shift()方法则返回被删去的那个元素。

< script >
var a = new Array ( 1 , 2 , 3 )
var b = a . unshift ( 4 , 5 , [ 6 , 7 ]) //a为[4, 5, [6, 7], 1, 2, 3]  b为6  注意unshift()方法不会帮你打开一个数组,还有就是被插入数值的顺序
var c = new Array ( " first " , 1 , 2 , 3 , 4 )
var d = c . shift () //c为[1, 2, 3, 4]  d为字符串形式的"first"
<
/ script>

concat()方法可以返回一个在原有数组上增添了元素的数组,元素用“,”分隔,元素中如果有数组,将被展开并继续添加,但不支持多维数组形式的展开添加

< script >
var a = new Array ( " first " , " second " , " third " )
s = a . concat ( " fourth " , [ " fifth " , " sixth " ] , [ " seventh " , [ " eighth " , " ninth " ]])
document . write ( s [ 7 ])
// 显示的结果是“eighth, ninth”,说明“eighth, ninth”是以数组的形式被添加了进去,此是s的值为["first", "second", "third", "fourth", "fifth", "sixth", "seventh", ["eighth", "ninth"]]
<
/ script>

slice()方法返回数组的一个片断,或者说是子数组。slice()的参数表示字数组的始末位置,如果只有一个参数,就表示从该处开始一直取到最后,如果参数出现负数,则表示倒数的某个位置。

< script >
var a = new Array ( 1 , 2 , 3 , 4 , 5 )
var b = a . slice ( 3 )   //b为[4, 5]
var c = a . slice ( - 3 ) //c为[3, 4, 5]
var d = a . slice ( 1 ,- 1 ) //d为[2, 3, 4]
var e = a . slice ( - 3 ,- 1 ) //e为[3, 4]
<
/ script>

reverse()方法将数组反向排序,他并不创建和返回一个新的数组,而是在原有的数组上进行操作

< script >
var a = new Array ( " first " , " second " , " third " )
a . reverse ()
document . write ( a )
//显示的结果是“third,second,first”,这时候数组的顺序已经颠倒了
<
/ script>

sort()方法的作用是对数组进行排序,这是一个非常奇特的方法,我不知道当初创作他的人是出于懒惰还是聪明,这是一个让我印象深刻的方法。
sort()方法的参数是一个有两个参数,并且有返回值的函数,如果返回的值大于零,则说明前一个参数比后一个参数大,等于零则相等,小于零说明前一个参数比后一个小,而相对小的那个参数将出现在排序的前列。
sort()方法直接在数组上进行操作,同时也返回值,但是两者似乎是等价的。sort()方法默认是用字母的顺序进行排序

< script >
var a = new Array ( 33 , 4 , 111 , 543 )
a . sort ( way )
function way ( x , y ){
    
if ( x % 2 == 0 )  
        
return 1 ;
    
if ( x % 2 != 0 )        
        
return - 1 ;
}
//排序的结果是使奇数在前偶数在后
<
/ script>

splice()方法的作用是插入、删除或者替换一个数组元素,他不光会在原有的数组上进行修改,还会返回被处理掉的内容,因此这是一个功能强大,但是不容易使用的方法,splice()方法用前两个参数进行定位,余下的参数表示插入部分。

< script >
var a = new Array ( 1 , 2 , 3 , 4 , 5 )
var b = a . splice ( 2 ) //a为[1, 2]  b为[3, 4, 5]
var c = new Array ( 1 , 2 , 3 , 4 , 5 )
var d = c . splice ( 2 , 2 ) //c为[1, 2, 5]  d为[3, 4]
var e = new Array ( 1 , 2 , 3 , 4 , 5 )
var f = f . splice ( - 4 , 2 ) //e为[1, 4, 5]  f为[2, 3]
var g = new Array ( 1 , 2 , 3 , 4 , 5 )
var h = g . splice ( - 2 ,- 2 ) //第二个参数表示长度,因此负数在此无效
 
var i = new Array ( 1 , 2 , 3 , 4 , 5 )
var j = i . splice ( 2 , 2 , " first " , " second " , " third " ) //i为[1, 2, "first", "second", "third", 5]  j为[3, 4]  后面部分会自动前后移动,以保持数组的连续性
var k = new Array ( 1 , 2 , 3 , 4 , 5 )
var l = k . splice ( 2 , 2 , [ " first " , " second " ] , " third " ) //k为[1, 2, ["first", "second"], "third", 5]  l为[3, 4]  splice()方法不会展开数组,只直接写入
<
/ script>

 

分享到:
评论

相关推荐

    android数组资源string-array integer-array的用法

    在Android开发中,数组资源是十分...总之,理解并熟练运用`string-array`和`integer-array`是Android开发的基础技能,它们在许多功能实现中都发挥着关键作用。合理地利用数组资源,可以使代码更加整洁,提高开发效率。

    init_array教程

    在Linux和类Unix系统中,`init_array`是ELF(Executable and Linkable Format)文件类型的一部分,它是一个特殊的段,用于存放程序启动时需要执行的一系列初始化函数指针。这个教程将深入探讨`init_array`的概念、...

    PV_Array.zip_PV array模块_pv array 仿真_pv arraymatlab_光伏特性_光伏电池

    标题中的“PV_Array.zip”是一个压缩包文件,包含与光伏(Photovoltaic,简称PV)系统相关的材料,特别是关于“PV array”的建模和仿真。"PV array"指的是由多个光伏电池串联或并联组成的光伏阵列,是太阳能发电系统...

    Array.Copy 方法

    `Array.Copy`方法是.NET框架中的一个非常重要的成员,它属于`System.Array`类,用于在数组之间高效地复制元素。...正确理解和使用它可以提高代码的效率和可读性。在实际开发中,应根据具体需求选择合适的重载版本。

    Phased Array Antennas Floquet Analysis

    标题“Phased Array Antennas Floquet Analysis”表明本书主要讨论的主题是关于相控阵天线的Floquet分析。相控阵天线是一种由许多小天线元素组成的阵列,这些元素能够单独或集体地调整其相位和幅度来控制电磁波的...

    C_Array Array数组

    通过一维数组、多维数组和泛型的深入理解和实践,可以更好地理解和处理数据集合。枚举的理解和使用则有助于编写更加清晰和严谨的代码。在实际编程中,数组和泛型集合常用于数据处理和存储,而枚举则常见于定义固定...

    C# Array和ArrayList,List区别

    本文将详细解释C#中Array、ArrayList和List之间的区别,并通过示例代码帮助理解这些概念。 #### 一、C# Array 数组的用法及特点 **定义与初始化** Array是一种最基本的数据结构,用于存储相同类型的多个元素。...

    pv_array.rar_PV array_solar array_光伏阵列_太阳能_太阳能 matlab

    **光伏阵列(PV Array)** ...总的来说,“pv_array.rar”提供的MATLAB Simulink模型为理解和优化太阳能光伏阵列提供了重要的工具,无论是初学者还是专业研究者,都能从中受益,进一步推动太阳能技术的发展。

    PVarray.rar_pv阵列_simulink的PVARRAY1_simulink里PV array_光伏simulink_

    在本文中,我们将深入探讨如何使用Simulink进行光伏阵列(PV Array)的仿真,主要基于提供的"PVarray.rar"压缩包中的"PVarray"文件。Simulink是MATLAB环境下的一个强大的动态系统建模工具,尤其适用于电气工程、控制...

    PV Array 光伏阵列

    在太阳能发电系统中,"PV Array",即光伏阵列,是核心组成部分,它由多个光伏电池片组合而成,能够将太阳光能转化为电能。本文将深入探讨光伏阵列的工作原理、应用以及如何在MATLAB环境中搭建光伏阵列模型。 光伏...

    PHP 的Array2xml

    在PHP编程中,XML(eXtensible Markup Language)是一种被广泛用于数据交换的语言,它允许数据...通过理解Array2xml类的工作原理和使用方法,开发者可以更有效地在PHP中处理数组与XML之间的转换,提升数据处理的能力。

    array_sum_java_SUM_array_

    在处理大型数据集时,理解如何有效地操作数组是非常重要的。数组是计算机科学中最基本的数据结构之一,熟练掌握其操作能帮助开发者编写出更加高效和可维护的代码。在这个`array_sum_java_SUM_array_`的例子中,我们...

    Laravel开发-multi-level-array-iterator

    总之,理解并掌握Laravel的multi-level array iterator对于提升你在处理复杂数据结构时的编程能力非常有帮助。通过自定义迭代器,你可以更优雅地解决那些涉及深度遍历和操作数组的问题,从而提高代码的可读性和维护...

    TIA博途中数组Array【】的基本使用方法详解.docx

    ### TIA博途中数组Array【】的基本使用方法详解 #### 一、数组Array【】概述 在TIA博途(Totally Integrated Automation Portal)中,数组(Array)是一种...理解并熟练掌握其使用方法对于自动化工程师来说至关重要。

    matlab开发-ArrayFactor

    9. **文档和注释**:为了更好地理解和使用ArrayFactor,查看源代码中的注释和函数文档至关重要。它们可能包含关于输入参数、返回值、示例以及如何调用函数的信息。 10. **错误处理和调试**:在开发过程中,Array...

    array apv 8.4 webui使用手册

    根据提供的文件信息,我们可以归纳出一系列与Array APV 8.4 WebUI使用相关的...通过以上知识点的详细介绍,用户可以更好地理解Array APV 8.4 WebUI使用手册中的内容,并能够有效地利用手册指导进行设备的配置和管理。

    ARRAY-MORPHING_WP_EN_2-0.

    - **预测性**:通过对物理定律的理解,可以预测频率响应的变化。 #### 3. 技术发展 自1992年以来,L-ACOUSTICS®就一直在研究影响线声源设计频率响应变化的多种因素。随着数字信号处理技术的进步,现在可以通过...

    php模拟区块链利用array数组直观理解区块链结构.zip

    在本资源中,我们通过PHP中的array数组来模拟区块链,帮助初学者更直观地理解其工作原理。 首先,我们需要理解区块链的基本构成。每个区块(Block)通常包含三部分:区块头(Header)、交易数据(Transactions)和...

    Allegro中VIA ARRAY使用教程(英文)

    首先,让我们理解一下为什么需要使用VIA ARRAY。在许多现代电子设计中,信号屏蔽是非常关键的,以防止电磁干扰(EMI)并提高电磁兼容性(EMC)。这可以通过围绕特定网络或整个板边设置与地平面连接的过孔阵列来实现...

    square_node_array_CFD_square_node_array_

    如果你正在使用这个资源来完成作业或进行CFD学习,理解代码如何创建和操作`square_node_array`是非常关键的。同时,了解相关CFD理论和MATLAB编程基础也非常重要,这将帮助你更好地理解和应用这个脚本。

Global site tag (gtag.js) - Google Analytics