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(), 可以删除指定多个元素,同时也可以在指定位置添加元素。