读写数组

课后整理 2020-12-10

访问数组就是访问数组元素。元素相当于变量,数组的元素是一组有序排列的变量,它们没有标识符,以下标进行索引,下标从0开始,有序递增。注意,数组下标是非负整数型表达式,或者是字符型数字,但不可以为其它类型的值或表达式。

使用中括号([])可以读写数组。中括号左侧是数组名称,中括号内为数组下标。

数组[下标表达式]

下标表达式是值为非负整数的表达式。

【示例1】下面代码使用中括号为数组写入数据,然后再读取数组元素的值。

var a = [];                                                 //声明一个空数组 
a[0] = 0;                                                   //为第1个元素赋值为0
a[2] = 2;                                                   //为第3个元素赋值为2
console.log( a[0] );                                    //读取第1个元素,返回值为0
console.log( a[1] );                                    //读取第2个元素,返回值为undefined
console.log( a[2] );                                    //读取第3个元素,返回值为2

在上面代码中仅为0和2下标位置的元素赋值,下标为1的元素为空,读取时为空的元素返回值默认为undefined。

【示例2】下面代码使用for语句批量为数组赋值。其中数组下标是一个递增表达式。

var a = new Array();                                  //创建一个空数组 
for( var i = 0; i < 10; i ++ ){                      //循环为数组赋值 
    a[i ++ ] = ++ i;                                  //不按顺序为数组元素赋值 
}
console.log( a );                                        //返回2,,,5 ,,,8,,, 11

【示例3】设计有两个变量,不需要其它变量的帮助实现值互换。

一般情况下实现变量交换,需要定义一个临时变量做中转。

var a = 10, b = 20;                                    //变量初始化 
var temp = a;                                            //定义临时变量存储a
a = b;                                                       //把b的值赋值给a
b = temp;                                                 //把临时变量的值赋值给b

利用数组就可以这样设计:

var a = 10, b = 20;                                    //变量初始化 
a = [b, b = a][0];                                       //通过数组快速交换数据 

【设计技巧】

数组的元素允许使用表达式,表达式的值与元素的值是两个不同概念,本质上元素也是一个变量,标识符是下标编号。在一个匿名数组中,把变量b的值传递给第一个元素,然后在第二个元素中以赋值表达式运算的方式把变量a的值赋值给变量b,再把变量b的值传递给第二个元素。这个过程是按顺序执行的,变量b的值被重写,同时数组也被添加了2个元素,最后使用中括号语法读取第一个元素的值,并赋值给变量a,从而实现值互换。