Javascript数组什么意思

在Javascript中,数组是指有序数据的集合,数组中的每个成员被称为元素,每个元素的名称(键)被称为数组下标(Index);数组的长度是弹性的、可读写的。

本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

JavaScript 数组(Array)是有序数据的集合,数组中的每个成员被称为元素(Element),每个元素的名称(键)被称为数组下标(Index)。数组的长度是弹性的、可读写的。

Array 数组对象是 JS 的内置对象,它可以用一个变量来存储一系列相同或不同类型的值,其中存储的每个值称为数组元素。

JS数组的创建

使用 Array 对象存储数据之前必须先创建 Array 对象。创建 Array 对象有多种方式,下面列出两种常用方式。

  • 方式一:var 数组对象名 = [元素1,元素2,…,元素n];

  • 方式二:var 数组对象名 = new Array(元素1,元素2,…,元素n);

方式一是一种较简洁的数组创建方法,而方式二则是一种较正式的数组创建方法。这两种创建方式都返回新创建并被初始化了的数组对象,它们都使用参数指定的值初始化数组,元素个数(也叫数组长度)为参数的个数。这两种方式效果在一般情况下是一样的,但由于方式一更简洁,因此在实际应用中最常用。

数组创建示例:

var hobbies1 = ["旅游","运动","音乐"];
var hobbies2 = new Array("旅游","运动","音乐");

上面示例代码创建了两个包含 3 个元素的数组对象,它们是完全等效的,但第一行代码更简洁。

需要注意的是:上述两种创建数组的方式,一般情况下是完全等效的,除了只有一个数值类型参数的情况。因为此时,使用第一种创建方式时,表示创建的是一个只包含一个元素的数组,该元素的值等于数值参数;使用第二种创建方式,则表示创建了一个长度等于数值类型参数的数组,例如:

var arr = [3]; //创建了一个只有一个元素的数组,元素值为3
var arr = new Array(3);//创建了一个有3个元素的数组,3个元素值均为undefined

JS数组元素的引用

数组中存储的每个元素都有一个位置索引(也叫下标),数组下标从 0 开始,到数组长度 -1 结束,即第一个元素的下标为 0,最后一个元素的下标为数组长度 -1。

引用数组元素时可以通过数组名和下标来实现,引用格式如下:

数组名[元素下标]

例如:一个包含 3 个元素的名为 arr 的数组的 3 个元素,可分别通过:arr[0]、arr[1] 和 arr[2] 来引用。

JS数组的访问

访问数组有两种方式:

  • 一是直接访问数组名,此时将返回数组中存储的所有元素值。例如,alert(hobbies1),该语句执行后将在警告对话框中输出上面创建的 hobbies1 数组中存储的所有元素值:旅游,运动,音乐;

  • 二是使用数组加下标访问,此时将返回数组下标对应的数组元素值。例如:alert(hobbies1[1]),该语句执行后将在警告对话框中输出“运动”。

JS遍历数组(for in和forEach循环)

JS 遍历数组(循环数组)的方式有多种,可以使用传统的 for 循环,也可以使用升级版的 for in 循环,还可以使用 Array 类型的 forEach() 方法;如果希望遍历对象的键名,还可以使用 keys() 方法。

1、使用 for 和 for in遍历数组

for 和 for/in 语句都可以迭代数组。for 语句需要配合 length 属性和数组下标来实现,执行效率没有 for/in 语句高。另外,for/in 语句会跳过空元素。

对于超长数组来说,建议使用 for/in 语句进行迭代。

示例1

下面示例使用 for 语句迭代数组,过滤出所有数字元素。

var a = [1, 2, ,,,,,,true,,,,,,, "a",,,,,,,,,,,,,,,4,,,,,56,,,,,,"b"];  //定义数组
var b = [], num = 0;
for (var i = 0; i < a.length; i ++) {  //遍历数组
    if (typeof a[i] == "number")  //如果为数字,则返回该元素的值
        b.push(a[i]);
    num ++;  //计数器
}
console.log(num);  //返回42,说明循环了42次
console.log(b);  //返回[1,2,4,56]

示例2

下面代码使用 for/in 语句迭代示例 1 中的数组 a。在 for/in 循环结构中,变量 i 表示数组的下标,而 a[i] 为可以读取指定下标的元素值。

var b = [], num = 0;
for (var i in a) {  //遍历数组
    if(typeof a[i] == "number")  //如果为数字,则返回该元素的值
        b.push(a[i]);
    num ++;  //计数器
}
console.log(num);   //返回7,说明循环了7次
console.log(b);  //返回[1,2,4,56]

通过计时器可以看到,for/in 语句迭代数组,仅循环了 7 次,而 for 语句循环了 42 次。

2、使用 forEach 遍历数组

Array 类型为每个数组定义了 forEach() 原型方法,使用该方法可以为数组执行迭代操作。具体说明如下:

array.forEach(callbackfn[, thisArg]);

参数说明如下:

  • array:一个数组对象。

  • callbackfn:必需参数,最多可以接收三个参数的函数。forEach 将为数组中的每个元素调用 callbackfn 函数一次。

  • thisArg:可选参数,callbackfn 函数中的 this 可引用的对象。如果省略 thisArg,则 this 的值为 undefined。

对于数组中出现的每个元素,forEach 方法都会调用 callbackfn 函数一次,采用升序索引顺序,但不会为数组中空元素调用回调函数。

除了数组对象之外,forEach 方法还可以用于有 length 属性且具有已按数字编制索引的属性名的任何对象,如关联数组对象、Arguments 等。

回调函数语法如下:

funtion callbackfn(value, index, array);

最多可以使用三个参数来声明回调函数。回调函数的参数说明如下。

  • value:数组元素的值。

  • index:数组元素的数字索引。

  • array:包含该元素的数组对象。

forEach 方法不直接修改原始数组,但回调函数可能会修改它。

示例

下面示例使用 forEach 迭代数组 a,然后把每个元素的值和下标索引输出显示,代码如下:

function f(value,index,array) {
    console.log("a[" + index + "] = " + value);
}
var a = ['a', 'b', 'c'];
a.forEach(f);

演示结果如下:

【推荐学习:javascript高级教程】

以上就是Javascript数组什么意思的详细内容,更多请关注美工之家9502669.com其它相关文章!