目录
1.数组简介
2.创建数组
(1)使用Array构造函数
(2)使用数组字面量表示法
3.数组元素访问
4.增加、更新数组元素
5.删除元素
6.数组的遍历
(1)for循环遍历
(2)for-in遍历
什么是数组呢?简而言之,它就是一个用于存储数据的列表。与一次只能存储一个数据的变量不同,我们可以用数组来存储任意数量的元素值。
注:数组最多可包含4 294 967 295个项。如果想添加的项数超过这个上限值就会发生异常。如果创建一个初始大小与这个上限值接近的数组,则可能会导致运行时间超长的脚本错误。
var colors = new Array();
如果预先知道数组要保存的项目数量,也可以给构造函数传递该数量,而该数量会自动变成 length属性的值。例如,下面的代码将创建 length 值为 20 的数组。
var colors = new Array(20);
也可以向 Array 构造函数传递数组中应该包含的项。以下代码创建了一个包含 3 个字符串值的数组:
var colors = new Array("red", "blue", "green");
当然,给构造函数传递一个值也可以创建数组。但这时候问题就复杂一点了,因为如果传递的是数值,则会按照该数值创建包含给定项数的数组;而如果传递的是其他类型的参数,则会创建包含那个值的只有一项的数组。下面就两个例子:
var colors = new Array(3); // 创建一个包含 3 项的数组
var names = new Array("Greg"); // 创建一个包含 1 项,即字符串"Greg"的数组
另外,在使用 Array 构造函数时也可以省略 new 操作符。如下面的例子所示,省略 new 操作符的结果相同:
var colors = Array(3); // 创建一个包含 3 项的数组
var names = Array("Greg"); // 创建一个包含 1 项,即字符串"Greg"的数组
数组字面量由一对包含数组项的方括号表示,多个数组项之间以逗号隔开,如下所示:
var colors = ["red", "blue", "green"]; // 创建一个包含 3 个字符串的数组
var names = []; // 创建一个空数组
方括号中的索引表示要访问的值。如果索引小于数组中的项数,则返回对应项的值,就像这个例子中的 colors[0]会显示"red"一样。设置数组的值也使用相同的语法,但会替换指定位置的值。如果设置某个值的索引超过了数组现有项数,如这个例子中的 colors[3]所示,数组就会自动增加到该索引值加 1 的长度(就这个例子而言,索引是 3,因此数组长度就是 4)。数组的项数保存在其 length 属性中,这个属性始终会返回 0 或更大的值,如下面这个例子所示:
var colors = ["red", "blue", "green"]; // 创建一个包含 3 个字符串的数组
var names = []; // 创建一个空数组
alert(colors.length); //3
alert(names.length); //0
那我们应该如何访问数组中的各个数据元素呢? 通常,元素在数组中的索引位置(下标)是从 0 开始编号的。也就是说,数组首元素的索引值(或者说位置值)应该是 0,第二个元素的索引值则是 1,以此类推。为了访问特定的数组元素,我们需要用一对方括号来指定元素的索引值。因此 a[0]所访问的就是数组 a 的首元素,而 a[1]则代表第二个元素,以此类推。
我们可以通过索引来更新数组中的元素。例如在下面的代码中,我们更新了第三个元素(索引值为 2)的值,并将更新后的数组打印出来:
var a = [1,2,3];
a[2] = 'three';
console.log(a); //[1, 2, "three"]
另外,我们也可以通过索引一个之前不存在的位置,来为其添加更多的数组元素。
var a = [1,2,3];
a[2] = 'three';
a[3] = 'four';
console.log(a); //[1, 2, "three", "four"]
如果新元素被添加的位置与原数组末端之间存在一定的间隔,那么这之间的元素将会被自动设定为 undefined 值。例如:
var a = [1,2,3];
a[6] = 'new';
console.log(a); //[1, 2, 3, undefined x 3, "new"]
为了删除特定的元素,我们需要用到 delete 操作符。然而,相关元素被删除后,原数组的长度并不会受到影响。从某种意义上来说,该元素被删除的位置只是被留空了而已。
var a = [1, 2, 3];
delete a[1];
console.log(a); //[1, undefined, 3]
typeof a[1]; //"undefined"
//经常用的数组遍历:
var arr = [1,2,0,3,9];
for ( var i = 0; i
for-in是为遍历对象而设计的,不适用于遍历数组。遍历数组的缺点:数组的下标index值是数字,for-in遍历的index值"0","1","2"等是字符串。