内容目录
JavaScript中的Array
对象,就是我们常说的数组对象,主要用于封装多个任意类型的数据,并对它们进行管理。
所有主流浏览器均支持Array对象。更多细节信息请参考JavaScript Array对象的属性和方法。
语法
Array
对象(或称之为Array()
函数),其用法主要有以下两种:
用法一:充当Array
对象的构造函数使用,用于结合new
关键字构造一个新的Array
对象。Array()
构造函数又有如下两种形式:
// 形式一
new Array( [ size ] )
// 形式二
new Array( value1 [, value2 [, valueN... ] ] )
用法二:当作普通函数使用,其行为与用法一(使用new
关键字)完全一致,相当于用法一省略了new
关键字。
// 形式一
Array( [ size ] )
// 形式二
Array( value1 [, value2 [, valueN... ] ] )
用法三:JS还支持以字面值形式创建Array对象,其用法如下:
// 最外侧的一对中括号是语法所必需的,里面的中括号表示该参数可省略
// 一般推荐使用该方式创建数组
[ [ value1 [, value2 [, valueN...] ] ] ]
参数
请根据前面语法部分所定义的参数名称查找对应的参数。
参数 | 描述 |
---|---|
size | 可选/Number类型指定数组的长度(即数组元素的个数),默认为 0。 |
value1 | 任意类型指定的数组元素1。 |
value2 | 可选/任意类型指定的数组元素2。 |
valueN | 可选/任意类型指定的数组元素N,可以有任意多个。 |
Array()
的形式一将返回一个具有指定长度的数组:
- 如果没有指定
size
参数,则返回一个不包含任何元素的空数组(长度为 0)。 - 如果指定了
size
参数,则返回一个长度为size
、所有元素为undefined
的数组。 - 参数
size
不能为负数或小数部分不为0的浮点数,否则将引发异常:Uncaught RangeError: Invalid array length
。
Array()
的形式二将返回一个包含指定元素的数组,所有参数均为数组的元素,数组的长度即为参数的个数)。
注意:如果Array()
只有一个参数,则它既可能是形式一,也可能是形式二。此时,JS将会根据该参数的类型进行判断:
1.如果该参数为Number数据类型(不包括Number对象),则充当形式一的参数size
;
2.如果该参数为其它类型,则充当形式二的参数value1
。
返回值
Array()
函数的返回值是Array类型,返回一个新的Array对象。
示例&说明
以下是Array
对象的几种常见创建示例:
// 使用Array()构造一个空数组
var arr1 = new Array( ); // 长度为0
var arr2 = Array( ); // 长度为0
var arr3 = new Array( 3 ); // 长度为3 (只有一个Number数据类型的参数,将其视作size)
var arr4 = Array( 3 ); // 长度为3
// var arr = Array( -3 ); // size为负,将会报错!
var arr5 = new Array( "CodePlayer" ); // 长度为1 (只有一个参数,但不是Number数据类型,将其视作一个value1)
var arr6 = Array( new Number( 3 ) ); // 长度为1 (Number对象不是Number数据类型,也被视作value1)
var arr7 = new Array( "CodePlayer", "张三", true ); // 长度为3
var arr8 = Array( 5, "张三", 1.2, arr5 ); // 长度为4 (虽然第一个参数为Number数据类型,但有多个参数,JS仍将其视作value1。arr5是数组,仍被视作一个元素)
// 以字面值形式创建数组(推荐使用此方式)
// 中括号内的每个值都是数组的元素,可以有任意多个
var arr9 = [ ]; // 长度为0
var arr10 = [ 2 ]; // 长度为1 (中括号内的数据都是元素)
var arr11 = [ "张三", "CodePlayer", 365 ]; // 长度为3
在JS中,Array对象的数据类型为Object
。你可以使用typeof
运算符进行查看,其结果是"object"。
var arr1 = new Array();
var arr2 = Array( "CodePlayer" );
var arr3 = [ 2, 3, 5 ];
// arr2、arr3的测试输出结果与arr1完全一致,此处不再重复
document.writeln( typeof arr1 ); // object 【对js中绝大多数类型的对象使用typeof运算符,其结果都是"object"】
document.writeln( arr1 instanceof Array ); // true
document.writeln( arr1.constructor === Array ); // true
运行代码(其他代码请自行复制到演示页面运行)
在JS中,我们可以通过数组下标[index]
的形式访问其中的某个元素,也可以通过数组下标的形式向其中添加新的元素。数组下标是从0开始算起的。
var arr = ["CodePlayer", 2.1, true];
document.writeln( arr.length ); // 3
document.writeln( arr[0] ); // CodePlayer
document.writeln( arr[1] ); // 2.1
document.writeln( arr[2] ); // true
// 修改索引为1的元素(第二个元素)
arr[1] = "item2";
document.writeln( arr[1] ); // item2
// 添加一个新的元素到数组索引3
arr[3] = "新的元素";
document.writeln( arr.length ); // 4
// 常规for循环,遍历输出数组中的所有元素
for(var i = 0; i < arr.length; i++){
document.write( arr[i] + " ");
}
//输出结果: CodePlayer item2 true 新的元素
// for-in循环,遍历输出数组中的所有元素
for(var i in arr){
// 遍历输出数组中的所有元素
document.write( arr[i] + " ");
}
//输出结果: CodePlayer item2 true 新的元素
值得注意的是:Array对象的length
属性并不能真实反映数组中的实际元素个数,因为length
属性返回的是最大下标 + 1
。
var arr = [ ];
arr[1] = "Code";
arr[3] = "Player";
document.writeln( arr.length ); // 4 【最大下标(3) + 1】
// 常规for循环,遍历输出数组中的所有元素
for(var i = 0; i < arr.length; i++){
document.write( arr[i] + " ");
}
//输出结果: undefined Code undefined Player
// for-in循环,遍历输出数组中的所有元素
// for-in循环会忽略掉那些没有设置过的索引
for(var i in arr){
// 遍历输出数组中的所有元素
document.write( arr[i] + " ");
}
//输出结果: Code Player
0 条评论
撰写评论