当先锋百科网

首页 1 2 3 4 5 6 7

JavaScript Array(数组)对象
数组对象的作用是:使用单独的变量名来存储一系列的值。
数组可以用一个变量名存储所有的值,并且可以用变量名访问任何一个值。
数组中的每个元素都有自己的的ID,以便它可以很容易地被访问到。

创建数组
语法

new Array();
new Array(size);
new Array(element0, element1, ..., elementn);

返回值
返回新创建并被初始化了的数组。
如果调用构造函数 Array() 时没有使用参数,那么返回的数组为空,length 字段为 0。
当调用构造函数时只传递给它一个数字参数,该构造函数将返回具有指定个数、元素为 undefined 的数组。
当其他参数调用 Array() 时,该构造函数将用参数指定的值初始化数组。
当把构造函数作为函数调用,不使用 new 运算符时,它的行为与使用 new 运算符调用它时的行为完全一样。

 

字面

var myCars = ['Saab','Volvo','BMW'];

 
在一个数组中你可以有不同的对象
所有的JavaScript变量都是对象。数组元素是对象。函数是对象。
因此,你可以在数组中有不同的变量类型。

 

对象属性

属性描述
constructor返回对创建此对象的数组函数的引用。
length设置或返回数组中元素的数目。
prototype使您有能力向对象添加属性和方法。

 

对象方法

方法描述
concat()连接两个或更多的数组,并返回结果。
join()把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
pop()删除并返回数组的最后一个元素。
push()向数组的末尾添加一个或更多元素,并返回新的长度。
reverse()颠倒数组中元素的顺序。
shift()删除并返回数组的第一个元素。
slice()从某个已有的数组返回选定的元素。
sort()对数组的元素进行排序。
splice()删除元素,并向数组添加新元素。
toSource()返回该对象的源代码。
toString()把数组转换为字符串,并返回结果。
toLocaleString()把数组转换为本地数组,并返回结果。
unshift()向数组的开头添加一个或更多元素,并返回新的长度。
valueOf()返回数组对象的原始值。

 

数组创建测试

//创建数组
var hege = new Array(4);

document.write('<p>' + 'hege.length = ' + hege.length + '</p>');

document.write('<p>' + 'typeof hege[0] = ' + typeof hege[0] + '</p>');

try
{
	//数组赋值
	hege[0] = 'Cecilie';
	hege[1] = 'Lone';
	hege[2] = 'Emil';
	hege[3] = 'Tobias';
	hege[10] = 15.36;		//超过原定义的数组长度
}
catch(err)
{
	//未发生异常
	txt = '出错信息' + err.message
	document.write('<p>' + txt + '</p>');
}

document.write('<p>' + 'hege = ' + hege.toString() + '</p>');

document.write('<p>' + 'typeof hege[4] = ' + typeof hege[4] + '</p>');
document.write('<p>' + 'typeof hege[10] = ' + typeof hege[10] + '</p>');
document.write('<p>' + 'hege.length = ' + hege.length + '</p>');

 

 

函数测试代码

//函数concat(arrayX, arrayX,...,arrayX),arrayX可以是具体的值,也可以是数组对象。可以是任意多个。返回一个新的数组。
var a = [1, 2, 3];
var b = a.concat(4,5);

document.write('<p>' + 'a = ' + a + '</p>');
document.write('<p>' + 'b = ' + b + '</p>');
document.write('<p>' + 'a.concat(4,5) = ' + a.concat(4,5) + '</p>');

var c = new Array().concat(a, b);
document.write('<p>' + 'c = ' + c + '</p>');

var arr1 = new Array(3);
arr1[0] = 1;
arr1[1] = 2;
arr1[2] = 3;

var arr2 = new Array(3);
arr2[0] = 'James';
arr2[1] = 'Adrew';
arr2[2] = 'Martin';

var arr3 = [true, false];

document.write('<p>' + 'arr1.concat(arr2, arr3) = ' + arr1.concat(arr2, arr3) + '</p>');

//函数join([separator]), separator可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。返回字符串。
var arr1 = new Array(3);
arr1[0] = 'George';
arr1[1] = 'John';
arr1[2] = 'Thomas';
	
document.write('<p>' + 'arr1.join() = ' + arr1.join() + '</p>');
document.write('<p>' + 'arr1.join("\\") = ' + arr1.join('\\') + '</p>');

//函数pop(),返回对象最后一个元素。
var arr1 = new Array(3);
arr1[0] = 'George';
arr1[1] = 'John';
arr1[2] = 'Thomas';

document.write('<p>' + 'arr1 = ' + arr1 + '</p>');
document.write('<p>' + 'arr1.pop() = ' + arr1.pop() + '</p>');
document.write('<p>' + 'arr1 = ' + arr1 + '</p>');

//函数push(newelement1[,newelement2,...,newelementX]), 在数组尾部添加元素。返回值,把指定的值添加到数组后的新长度。
var arr1 = new Array(3);
arr1[0] = 'George';
arr1[1] = 'John';
arr1[2] = 'Thomas';

var arr2 = new Array(3);
arr2[0] = 'James';
arr2[1] = 'Adrew';
arr2[2] = 'Martin';	

document.write('<p>' + 'arr1 = ' + arr1 + '</p>');
document.write('<p>' + 'arr1.push("Victor", arr2) = ' + arr1.push('Victor', arr2) + '</p>');
document.write('<p>' + 'arr1 = ' + arr1 + '</p>');
document.write('<p>' + 'arr1 = ' + arr1[4] + '</p>');

//函数reverse(), 用于颠倒数组中元素的顺序。
var arr = new Array(3);
arr[0] = 'George';
arr[1] = 'John';
arr[2] = 'Thomas';

document.write('<p>' + 'arr = ' + arr + '</p>');

arr.reverse();
	
document.write('<p>' + 'arr.reverse() = ' + arr + '</p>');

//函数shift(), 用于把数组的第一个元素从其中删除,并返回第一个元素的值。返回值, 数组原来的第一个元素的值。
var arr = new Array(3);
arr[0] = 'George';
arr[1] = 'John';
arr[2] = 'Thomas';

document.write('<p>' + 'arr.shift() = ' + arr.shift() + '</p>');
document.write('<p>' + 'arr = ' + arr + '</p>');

//函数slice(start [,end])。 start, 规定从何处开始选取。 end, 规定从何处结束选取。
var arr = [90, 91, 92, 93, 94, 95, 96, 97, 98, 99];

document.write('<p>' + 'arr.slice(1) = ' +  arr.slice(1) + '</p>');
document.write('<p>' + 'arr.slice(100) = ' +  arr.slice(100) + '</p>');
document.write('<p>' + 'arr.slice(-1) = ' +  arr.slice(-1) + '</p>');
document.write('<p>' + 'arr.slice(1, 5) = ' +  arr.slice(1, 5) + '</p>');
document.write('<p>' + 'arr.slice(5, 5) = ' +  arr.slice(5, 5) + '</p>');
document.write('<p>' + 'arr.slice(-10, 5) = ' +  arr.slice(-10, 5) + '</p>');
document.write('<p>' + 'arr.slice(-10, -5) = ' +  arr.slice(-10, -5) + '</p>');
document.write('<p>' + 'arr.slice(-10, -1) = ' +  arr.slice(-10, -1) + '</p>');
document.write('<p>' + 'arr.slice(-10, 1) = ' +  arr.slice(-10, 1) + '</p>');	

//函数sort(sortby), 用于对数组的元素进行排序。返回值, 对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
var arr = new Array(6);
arr[0] = 'George';
arr[1] = 'george';
arr[2] = 'Adrew';
arr[3] = 'adrew';
arr[4] = 'a99drew';
arr[5] = '10Tank';

document.write('<p>' + 'arr = ' + arr + '</p>');
document.write('<p>' + 'arr.sort() = ' + arr.sort() + '</p>');

var arr = new Array(6);
arr[0] = 15;
arr[1] = 1;
arr[2] = 385;
arr[3] = 810;
arr[4] = 259;
arr[5] = 1000;

var arr1 = new Array(6);
arr1[0] = '15';
arr1[1] = '1';
arr1[2] = '385';
arr1[3] = '810';
arr1[4] = '259';
arr1[5] = '1000';

document.write('<p>' + 'arr.sort() = ' + arr.sort() + '</p>');
document.write('<p>' + 'arr1.sort() = ' + arr1.sort() + '</p>');

function sortNumber(a, b)
{
	return a - b;
}

document.write('<p>' + 'arr.sort(sortNumber) = ' + arr.sort(sortNumber) + '</p>');
document.write('<p>' + 'arr1.sort(sortNumber) = ' + arr1.sort(sortNumber) + '</p>');

//函数splice(index, howmany [, item1,...,itemX]), 向/从数组中添加/删除项目,然后返回被删除的项目。
//index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
//howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
//item1, ..., itemX 可选。向数组添加的新项目。
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('<p>' + 'arr = ' + arr + '</p>');
arr.splice(2, 0, 'William');
document.write('<p>' + 'arr = ' + arr + '</p>');
arr.splice(2, 1);
document.write('<p>' + 'arr = ' + arr + '</p>');
arr.splice(2, 3, 'William');
document.write('<p>' + 'arr = ' + arr + '</p>');

//函数toString(), toLocaleString()
var arr = new Array(6);

arr[0] = 'George';
arr[1] = 'John';
arr[2] = 'Thomas';
arr[3] = 'James';
arr[4] = '导弹';
arr[5] = 'Martin';

document.write('<p>' + 'arr.toString() = ' + arr.toString() + '</p>');
document.write('<p>' + 'arr.toLocaleString() = ' + arr.toLocaleString() + '</p>');	

//函数unshift(newelement1,newelement2,....,newelementX), 可向数组的开头添加一个或更多元素,并返回新的长度。
var arr = new Array(3);
arr[0] = 'George';
arr[1] = 'John';
arr[2] = 'Thomas';

document.write('<p>' + 'arr.unshift("Martin", 1526.57) = ' + arr.unshift('Martin', 1526.57) + '</p>');
document.write('<p>' + 'arr = ' + arr + '</p>');	

 

 

总结整理

  • 创建的数组未赋值前,typeof为undefined。数组创建后可以任意添加。
  • 数组对象可以被重新赋值为其他对象,赋值后不能作为数组操作。JavsScript的其他对象也应该有相似我特点。
  • 函数join(), toString()都是把数组转换为字符串,join()可以指定元素之间的分隔符,toString()函数使用默认分隔符。
  • 函数pop(), shift() 都是从数组中删除一个元素,并返回删除的元素。pop()为删除最后一个元素,shift()为删除第一个元素。
  • 函数push(), unshift() 都是向数组中添加一个或多个元素。push()在数组尾部添加,unshift()在数组开头添加。
  • 函数splice(), 可以删除指定多个元素,同时也可以在指定位置添加元素。