第二章 数组
数组是编程语言中的内建类型,通常效率很高,可以存储不同需求的数据。下面一起来学习JavaScript数组的工作原理和使用场景。
JavaScript数组的定义
标准定义:一个存储元素的线性集合(collection),通过索引任意存取,索引通常是数字,用来计算元素之间存储位置的偏移量。
JavaScript中,数组是一种特殊的对象,索引是该对象的属性,索引可能是整数。由于JavaScript中的属性必须名必须是字符串类型,所以索引会被处理为字符串类型。效率不如其他语言高。
使用数组
JavaScript数组非常灵活。
创建数组
通过字面量方式创建,[]操作符声明:var array = []; // 效率高,推荐使用
通过构造函数创建:var array = new Array();
读写数组
使用[]操作符读写数组
对数组的整体性操作
将一个数组赋给另一个数组时,是将引用传递给了被赋值数组,另一个是使用print()函数
存取函数
JavaScript提供了一系列访问数组元素的函数,叫做存取函数
例:indexOf(), join(), toString(), concat(), splice()等
可变函数
JavaScript拥有一组可变函数,用来改变数组内容
例:
1. 添加元素:push()添加至尾部,unshift()添加至头部
2. 删除元素:pop()删除尾部最后一个元素,shift()删除头部第一个元素,splice()从指定位置添加删除
3. 排序:reverse()顺序翻转,sort()默认按照字典顺序排序,处理数字时传入比较函数
迭代器
例:
1. 不生成新数组:forEach(),every(),some(),reduce()允许传一个函数参数,处理每一个元素。
2. 生成新数组:map(),filter()
二维和多维数组
JavaScript只支持一维数组,但是可以通过在数组中保存元素的方式,轻松创建出多维数组。下面给出一个创建二维数组的示例:
为Array添加一个创建二维数组的类方法
// 创建二维数组,并初始化数组元素
Array.gridArray = function(rows, cols, initial) {
var rowArr = [];
for (var i = 0; i < rows; i++) {
var colArr = [];
for (var j = 0; j < cols; j++) {
colArr[j] = initial;
}
rowArr[i] = colArr;
}
return rowArr;
}