JavaScript Array 对象常用方法与属性详解

作者:异步漫步时间:2026-10-30 08:04:50浏览:414

本文详细介绍JavaScript中Array对象的创建方式、constructor、length和prototype属性,以及concat、join、pop、push、reverse、shift、slice、sort、splice、toSource、toString和unshift等常用数组操作方法,帮助开发者掌握数组处理技巧。

Array对象的创建方式

在JavaScript中,创建Array对象主要有以下几种方式:

第一种是字面量定义法,例如:var arr = [1,2,3];

通过上述定义,可以直观地看到数组元素的索引对应关系。


arr[0] == 1;
arr[1] == 2;
arr[2] == 3;
--->new Array();
var arr = new Array();//定义一个没有任何内容的数组对象,然后以下面的方式为其赋值
arr[0] = "arr0";
arr[1] = "arr1";
arr[2] = "arr2";
--->new Array(size);//定义一个大小有限制的数组对象,然后以下面的方式赋值(赋值方式和上面是一样的)
var arr = new Array(3);
arr[0] = "arr0";
arr[1] = "arr1";
arr[2] = "arr2";
--->new Array(element0, element1, ..., elementn);//直接将数组内容定义好
var arr = new Array("arr0","arr1","arr2");

此时可以明确数组中各元素的值。


arr[0] == "arr0";
arr[1] == "arr1";
arr[2] == "arr2";

Array对象的属性

Array对象包含几个关键属性:

常见的属性包括constructor、length和prototype。

constructor属性用于标识对象的构造器,即表明该对象是由什么类型构成的,通俗来说就是判断对象的类型。


var arr = new Array(3);
if(arr.constructor==Array)
{
document.write("This is an Array");
}
if (test.constructor==Boolean)
{
document.write("This is a Boolean");
}
if (test.constructor==Date)
{
document.write("This is a Date");
}
if (test.constructor==String)
{
document.write("This is a String");
}

上述代码的执行结果为:This is an Array


--->length,即Array的长度
var arr = new Array(3);
document.write(arr.length);//输出结果是3

需要注意的是,在JavaScript中,Array对象的属性是可以被修改的。

因此,我们可以对属性进行重新赋值或扩展。


arr.length=5;
document.write(arr.length);//输出结果是5
--->prototype,使您有能力向对象添加属性和方法。
function myarray(name,age)//定义一个类,此类目前有两个属性
{
this.name = name;
this.age = age;
}
var myarr = new myarray("john",25);
myarray.prototype.test = null;//为myarray类添加了一个属性
myarr.test = "test";
alert(myarr.test);//输出test

数组连接与字符串转换方法

concat()方法用于连接两个或多个数组,生成一个新数组。

该方法主要有两种使用场景:

第一种是直接连接具体的数值或字符串数据。

例如:


var arr = new Array(1,2,3);
alert(arr.concat(4,5));//输出1,2,3,4,5

第二种是连接现有的多个数组对象。


var arr1 = new Array(1,2,3);
var arr2 = [4,5];
var arr3 = new Array("jone","john");
alert(arr1.concat(arr2,arr3));//输出1,2,3,4,5,jone,john

join()方法的作用是将数组中的所有元素合并为一个字符串。

该方法可以接受一个可选参数,用于指定字符串中元素之间的分隔符;如果不提供参数,则默认使用逗号分隔。


--->无参
var arr = new Array("jone","Grrgy","john");
alert(arr.join());//输出jone,Grrgy,john 字符串中间以,隔开
--->有参
var arr = new Array("jone","Grrgy","john");
alert(arr.join("."));//输出jone.Grrgy.john 字符串中间以参数隔开

数组元素的增删改查方法

pop()方法用于移除并返回数组的最后一个元素。


var arr = new Array("jone","john","grrgy");
document.write(arr.pop());//输出内容:grrgy
document.write(arr.join("-"));//输出:jone-john

push()方法用于向数组末尾添加一个或多个元素,并返回添加后的数组新长度。

如果push()方法没有传入参数,则返回数组原有的长度,且不对数组内容做任何修改。


var arr = ["jone","john","grrgy"];
document.write(arr.push("tom"));//输出:4(长度)
document.write(arr.join());//输出:jone,john,grrgy,tom

reverse()方法用于将数组中元素的顺序颠倒,该方法不需要参数。

例如:


var arr = ["jone","john","grrgy"];
document.write(arr.reverse());//grrgy,john,jone

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


var arr = ["jone","john","grrgy"];
document.write(arr.shift());//输出:jone
document.write(arr.join());//输出:jone,john

数组截取与排序方法

slice()方法用于从指定数组中截取一部分元素并返回一个新的数组。

该方法接受两个参数:start和end。start是必选参数,指定截取开始的位置;end是可选参数,指定截取结束的位置,若省略则截取到数组末尾。

例如:


var arr = ["jone","john","grrgy","tom","hell"];
var test = arr.slice(1);
if(test.constructor==Array)
{
document.write("This is an Array<br>");
document.write(test.join());
}

最终输出的结果为:

This is an Array john,grrgy,tom,hell

如果将var test = arr.slice(1)修改为:


var test = arr.slice(1,2);

则输出结果为:

john

sort()方法用于对数组元素进行排序,这是一个非常重要的方法。

该方法可以接受一个函数作为参数,用于自定义排序规则。需要注意的是,sort()方法会修改原数组,而不是生成新数组。如果未提供参数,则默认按照字符串字典顺序进行排序。

例如:


var arr = ["jone","john","grrgy","tom","hell"];
document.write(arr.sort());
document.write("<br>");
document.write(arr);

输出结果为:

grrgy,hell,john,jone,tom grrgy,hell,john,jone,tom

下面是按照数字大小进行排序的示例。


function sortNumber(a,b)// 定义排序规则的函数
{
if(a>b)
{
return 1;
}
else if(a<b)
{
return -1;
}
else
{
return 0;
}

}
var arr = new Array(1,2000,3,400);
document.write(arr.sort(sortNumber));//此处只写函数名即可
document.write("<br>");
document.write(arr);

输出:

1,3,400,2000 1,3,400,2000

数组元素的替换与插入方法

splice()方法用于删除、替换或向数组中添加元素。

splice(index,howmany,element1,element2.....elementx)的参数说明如下:

index为必需参数,指定开始添加或删除元素的索引位置,必须为数字。howmany为必需参数,指定删除的元素数量,必须为数字,但可以是0。如果未指定howmany,则删除从index开始到数组末尾的所有元素。当howmany为0时,表示不删除任何元素,仅执行添加操作。element1等为可选参数,指定要添加到数组的新元素,从index指定的位置开始插入,可以插入多个元素。splice()与slice()的区别在于,splice()直接修改原数组并返回被删除的元素组成的数组,而slice()返回新数组且不修改原数组。splice()常用于数组元素的替换、插入或删除操作。

参考以下三个示例:


--->只插入
var arr = new Array(6);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
arr[3] = "James";
arr[4] = "Adrew";
arr[5] = "Martin";
document.write(arr + "<br />");
arr.splice(2,0,"William");
document.write(arr + "<br />");

输出结果:

George,John,Thomas,James,Adrew,Martin George,John,William,Thomas,James,Adrew,Martin

此处将William插入到了索引为2的位置。


--->只删除
var arr = new Array(6);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
arr[3] = "James";
arr[4] = "Adrew";
arr[5] = "Martin";
document.write(arr + "<br />");
arr.splice(2,1);
document.write(arr + "<br />");

输出结果:

George,John,Thomas,James,Adrew,Martin George,John,James,Adrew,Martin

此处删除了原数组中索引为2的元素。


--->既删除又添加(相当于替换)
var arr = new Array(6);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
arr[3] = "James";
arr[4] = "Adrew";
arr[5] = "Martin";
document.write(arr + "<br />");
arr.splice(2,1,"William");
document.write(arr + "<br />");

输出结果:

George,John,Thomas,James,Adrew,Martin George,John,William,James,Adrew,Martin

此处将原数组中索引为2的Thomas替换为了William。

其他数组相关方法

toSource()方法返回对象的源代码字符串,此方法通常在JavaScript引擎内部自动调用,前端开发中较少直接使用。

此外,此方法在IE浏览器中无法实现,例如在Firefox浏览器中。


var myarr = new Array('lisi',25);
document.write(myarr.toSource());

输出结果为:

["lisi", 25]

如果重新定义一个类,则可以显示属性名,例如:


function myarray(name,age)
{
this.name = name;
this.age = age;
}
var myarr = new myarray('lisi',25);
document.write(myarr.toSource());

输出结果为:

({name:"lisi", age:25})

这种格式类似于JSON数据,但实际上并不等同于JSON数据类型。

toString()方法将数组转换为字符串,其效果与join()类似,但join()允许自定义分隔符。

而toString()方法只能使用逗号作为分隔符,例如:


var myarr = new Array('jone','john','Tom');
document.write(myarr.join('.'));
document.write('<br>');
document.write(myarr.join(','));
document.write('<br>');
document.write(myarr.join());
document.write('<br>');
document.write(myarr.toString());

输出结果为:

jone.john.Tom jone,john,Tom jone,john,Tom jone,john,Tom

可以看出,后三种方法的结果是一致的。

unshift()方法用于向数组开头添加一个或多个元素,并返回数组的新长度,同时会修改原数组。

unshift(element1,element2,element3....)至少需要提供一个元素,例如:


var myarr = new Array('jone','john','Tom');
var length = myarr.unshift('zhangsan','lisi');
document.write(myarr);
document.write('<br>');
document.write(length);

输出结果为:

zhangsan,lisi,jone,john,Tom 5

以上介绍了JavaScript中Array对象的相关知识,希望有所帮助。

作者最新文章