JavaScript Array 对象核心方法与属性详解

作者:纸飞机时间:2026-10-23 08:29:00浏览:234

本文深入解析JavaScript中Array对象的核心特性与内置方法。涵盖数组的三种定义方式、稀疏数组的内存机制,以及concat、join、push/pop、reverse、shift/unshift、slice、sort和splice等关键API的使用场景与注意事项,帮助开发者高效操作数组数据。

JavaScript Array 对象概述与定义

在研究prototype.js脚本库时,我们发现部分方法使用频率较低,但其中一些经典实现极具参考价值。随着脚本库体积日益庞大,理解其底层逻辑至关重要。接下来我们将继续JavaScript基础学习,重点探讨Array数组对象。


首先介绍数组的基本定义方式。


具体代码实现如下。

var arrayObj = new Array()
var arrayObj = new Array([size])
var arrayObj = new Array([element0[, element1[, [, elementN]]]])

上述代码中,arrayObj 是引用 Array 对象的变量名。


size 参数指定数组大小。由于数组索引从 0 开始,若指定 size,则元素索引范围为零到 size -1。


element0 至 elementN 参数用于初始化数组元素。此语法创建的数组长度为 n + 1(n为元素个数)。使用该语法时,必须至少提供一个元素。


若仅向 Array 构造函数传递单个数值参数,该值必须是无符号 32 位整数(约 40 亿),并作为数组的 length 属性。若该值小于 0 或非整数,将触发运行时错误。


若传递给 Array 构造函数的单个参数非数值,则 length 属性设为 1,且该参数值成为数组中唯一的元素。


JavaScript 数组属于稀疏数组(Sparse Array)。即使为数组分配了多个元素,实际内存中仅存储包含数据的元素,这种机制有助于节省内存空间。


Array 对象包含三个内置属性:constructor、length 和 prototype。关于 constructor、prototype 和 arguments 等属性的深入探讨将在后续文章中单独展开,此处不再赘述。下面我们重点介绍 Array 的内置方法,这些方法在实际开发中极为常用。


数组核心方法:连接与转换

concat 方法用于连接两个或多个数组,并返回一个新数组。需注意引用类型与值类型的区别:对于引用类型(如对象),复制的是引用地址,源数组与新数组中的对象指向同一实例,修改任一数组中的对象属性都会影响另一方;对于值类型(如数字或字符串),复制的是具体值,修改一个数组中的值不影响另一个数组。示例如下:


具体代码实现如下。

1 function ConcatArrayDemo(){
2 var a, b, c, d;
3 a = new Array(1,2,3);
4 b = "JScript";
5 c = new Array(42, "VBScript);
6 d = a.concat(b, c);
7 // 返回数组 [1, 2, 3, "JScript", 42, "VBScript"]
8 return(d);
9 }
10

join 方法将数组元素转换为字符串,元素间由指定的分隔符连接,默认分隔符为逗号。示例如下:


具体代码实现如下。

1 function JoinDemo(){
2 var a, b;
3 a = new Array(0,1,2,3,4);
4 b = a.join("-");
5 //返回:"0-1-2-3-4"
6 return(b);
7 }

数组元素增删与反转操作

pop 方法移除并返回数组的最后一个元素。若数组为空,则返回 undefined。


push 方法将新元素添加到数组末尾,添加顺序与参数顺序一致。若参数中包含数组,则该数组作为单个元素被添加。如需合并多个数组,建议使用 concat 方法。


reverse 方法反转数组元素的顺序,该方法不创建新数组。若原数组存在间隙(稀疏数组),reverse 会在间隙处填充 undefined 值以填补空缺。示例如下:


具体代码实现如下。

1 function ReverseDemo(){
2 var a, l; // 声明变量。
3 a = new Array(0,1,2,3,4); // 创建数组并赋值。
4 l = a.reverse(); // 反转数组的内容。
5 //返回:l=[4,3,2,1,0]
6 return(l); // 返回结果数组。
7 }

shift 方法移除并返回数组的第一个元素。


数组切片、排序与修改

slice 方法返回数组的指定片段,包含 start 索引处的元素,但不包含 end 索引处的元素。若 start 为负数,则按 length + start 计算;若 end 为负数,则按 length + end 计算。若省略 end,则截取至数组末尾。若 end 小于 start,则返回空数组。示例:


//除了最后一个元素之外,myArray 中所有的元素都被复制到 newArray 中:


newArray = myArray.slice(0, -1)


sort 方法对数组元素进行排序,不创建新数组。若提供 sort 函数参数,该函数需返回以下值之一:


· 负值,表示第一个参数小于第二个参数。


· 零,表示两个参数相等。


· 正值,表示第一个参数大于第二个参数。


具体代码实现如下。

1 function SortDemo(){
2 var a, l; // 声明变量。
3 a = new Array("X" ,"y" ,"d", "Z", "v","m","r");
4 l = a.sort(); // 排序数组。
5 return(l); // 返回排序的数组。
6 }

splice 方法用于从 start 位置开始移除指定数量的元素,并可插入新元素,从而修改原数组。该方法返回一个由被移除元素组成的新数组。语法格式如下:


arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])


toLocaleString 方法将在 Date 对象章节详细讲解,通常该方法仅用于向用户展示格式化字符串,不用于代码逻辑计算。


unshift 方法将元素插入数组开头,元素在数组中的顺序与参数序列一致。语法格式如下:


arrayObj.unshift([item1[, item2 [, . . . [, itemN]]]])


valueOf 方法与 toString 方法类似,将数组元素转换为字符串,并用逗号连接。其操作逻辑与 Array.toString 和 Array.join 方法相同。

作者最新文章