第六章 数组
1 什么是数组
1) 数组是值的有序集合。
2) 每个值叫做一个元素。
3) 每个元素在数组中有一个位置, 以数字表示,称为索引 (有时也称为下标)。
4) 数组的元素可以是任何类型。
5) 数组索引从 0 开始, 最大为 2^32-2,数组最大能容纳 4294967294 个元素。
2 创建数组
2.1 使用数组直接量
// 定义所有的姓名组成的集合
var nameList = ['曹操', '诸葛亮', '刘备', '吕布', '安妮'];
//定义由数字组成的数组
var numList = [112,232,34,34234,3434,3434,121,112,112,112];
//数组的元素各种类型都有
var list = ['孙悟空', 100, true, false, '猪八戒', [1, 2, 3]];
[]
这种写法,结构简单,[]
里面的内容都是数组元素,用逗号隔开。
2.2 使用 Array 函数
// 定义数组,使用Array函数
var list1 = Array(10, 20, 30);
var list2 = Array(30);
var list3 = Array('芳芳');
Array()
如果只有一个参数且该参数是数字,那么数字表示数组的长度,数组元素是空。
Array()
如果参数不止一个,或只有一个但类型是字符串,参数都会变为数组的元素。
3 读写数组元素
使用操作符 []
来读写数组的每一个元素, []
中是数组的索引。
// 读取数组中元素的值
nameList[12];
// 给数组中的元素赋值
nameList[2] = 100;
数组可以通过 length
属性获取数组的长度,也就是数组中元素的个数。
nameList.length; // 获取数组 nameList 的长度
4 稀疏数组
数组内有内容的元素的索引没有连续,这样的数组称之为稀疏数组。
JS 要求数组中的元素索引必须是连续的,如果给索引值很大的元素赋值,而中间的索引没有赋值,会把没没赋值的元素补全,但是元素内容是空的, 也就成为了稀疏数组。
如果要获取没有内容的元素的值,会得到 undefined。
5 遍历数组(迭代)
// for 循环遍历
for (var i = 0; i < arr.length; i ++) {
arr[i]
}
//for in 循环
fro (var i in arr) {
arr[i]
}
6 数组元素的添加和删除
6.1 添加元素
① 指定索引添加元素,索引需要计算(避免成为稀疏数组或者修改了其他元素的值)
② 把数组长度作为索引;因为没添加元素之间,数组的最大索引就比长度-1
③ arr.push(新元素) 在数组的最后面添加一个元素
④ arr.unshift(新元素) 在数组的最前面添加一个元素
⑥ arr.splice(位置, 0, 新元素) 在指定的位置插入一个元素
6.2 删除元素
① 强制设置数组的length属性,如果设置的length值与原来小,会删除后面想元素 删除一个 arr.legnth -= 1
② arr.pop() 删除数组中最后一个元素
③ arr.shift() 删除数组中第一个元素;剩下的元素自动调整索引
④ arr.splce(位置, 1) 指定位置,删除一个元素; 剩下的元素自动调整索引;
7 多维数组
// 创建多维数组
var cityList = [
['广州', '深圳', '佛山', '东莞', '惠州'],
['南京', '苏州', '徐州', '无锡', '南通'],
['济南', '青岛', '烟台', '潍坊', '淄博'],
['杭州', '宁波', '温州', '绍兴', '湖州']
];
// 多维数组取值
cityList[2][1];
// 多维数组遍历
for (var i = 0; i < cityList.length; i ++) {
for (var j = 0; j < cityList[i].length; j ++) {
console.log(cityList[i][j]);
}
console.log('');
}
8 类数组对象/伪数组对象
具有数组的特性,但却不是数组的一类对象,我们称之为类数组对象或者伪数组对象。
这类对像数组一样是多个值的组合,可以用[]
去取其中的值,可以像数组那样去遍历。
9 字符串具有数组的特性
字符串可以通过 []
取到指定的字符,只能取值无法修改。
2)字符串属性 .length
可获取字符串的长度(字符的个数)。
3)字符串可以向数组那样遍历。