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