第六章 数组

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)字符串可以向数组那样遍历。

results matching ""

    No results matching ""