Skip to content

数组 Array

什么是数组

js
1. 数组是值的有序集合
2. 组成数组的成员(值)称为元素, 元素可以是任意类型的数据
3. 每个元素有个位置,位置使用数字表示,称为索引(小标),索引是连续的数字,从 0 开始
4. 数组索引从 0 开始, 最大为 2^32-2,数组最大能容纳 4294967294 个元素。

创建数组的方式

① 直接量方式

js
[];		// 空数组
[100, 45.101, '高小乐', false, null, undefined, [100,200,300]];

② Array 函数方式

js
Array();            // 创建空数组
Array(200,300,'Hello', '高小乐', [10,20,03]);	  // 创建了具有5个元素的数组
Array(17);			// 创建了具有17个元素的数组,每个元素没有值
Array('hello');     // 创建了具有1个元素的数组
js
如果 Array 函数只有一个参数且是个数字,该参数会被认为是数组中元素的个数

③ Array 构造函数方式

js
new Array();            // 创建空数组
new Array(200,300,'Hello', '高小乐', [10,20,03]);	  // 创建了具有5个元素的数组
new Array(17);			// 创建了具有17个元素的数组,每个元素没有值
new Array('hello');     // 创建了具有1个元素的数组
js
Array 构造函数的规则与 Array 函数一致!

数组元素的读写

① 读取数组元素的值

js
数组[索引]

读取不存在的元素的值,会自动得到 undefined。

② 修改数组元素的值

js
数组[索引] = 新值;

给不存在的元素赋值,会添加该元素作为新元素。

稀疏数组

js
1. 什么是稀疏数组
   如果数组中存在没有值的元素,该数组就是稀疏数组
   
2. 哪些方式可能会产生稀疏数组
   ① 给数组添加新元素,索引与前面不连续
   ② 使用 Array函数或构造函数方式创建数组,只有一个参数且是数字
   ③ 修改数组的 length 属性,值比原来的大

数组的遍历(迭代)

① 使用循环结构进行遍历(推荐)

js
for (var i = 0; i < 数组.length; i ++) {
    i;  	  // 作为索引
    数组[i];   // 元素的值
}

② 使用 for in 结构

for in 结构既可以遍历数组也可以遍历对象。

js
for (var i in 数组) {
     i;  	  // 作为索引
     数组[i];   // 元素的值
}
js
const arr = [100,200];
arr.firstName = '高';
arr.lastName = '乐';

const user = {
    name: '曹操',
    age: 19,
    address: '上海',
    say() {},
    eat() {}
};


for (let i in user) {
    console.log(i); // name age address say() eat()
}
console.log('');


console.log(arr);
for (let i in arr) {
    console.log(i, arr[i]); // 0:100 1:200 firstname:高 lastname:乐 length没有遍历出来
}
console.log('');

// window.name表示窗口的名字,表示一个字符串
// 把window.name的值更改为一个对象,返回了一个字符串,这个字符串包含了这个对象的类型。
window.name = user;
console.log(window.name); // 字符串 Object Object

arr.firstName = user;
console.log(arr.firstName);// 对象类型 {name}

数组元素的添加和删除

① 添加元素

js
1. 使用 数组.length 作为索引添加元素
   数组[数组.length] = 新元素

数组的方法push ,函数的=>方法,变量对象=>属性
2. push() 方法在数组后面添加一个或多个新元素
   数组.push(新元素);
   数组.push(新元素1, 新元素2...);

3. unshift() 方法在数组前面添加一个或多个新元素
   数组.unshift(新元素);
   数组.unshift(新元素1, 新元素2...);

4. splice() 方法指定位置添加一个或多个新元素,0代表添加元素,1,删除后边的元素。
   数组.splice(索引, 0, 新元素)
   数组.splice(索引, 0, 新元素1, 新元素2...)

② 删除元素

js
1. 数组.length -= n;  删除后n个元素
2. 数组.pop()		删除最后一个元素,一次只能删除一个
3. 数组.shift()	删除第一个元素,一次只能删除一个
4. 数组.splice(索引,数量);   删除指定位置指定数量的元素,删除指定位置后的几个元素。

多维数组

js
如果数组的元素还是数组,该数组可以称为多维数组
js
[
    ['广州', '深圳', '佛山', '东莞', '惠州'],
    ['南京', '苏州', '徐州', '无锡', '南通'],
    ['济南', '青岛', '烟台', '潍坊', '淄博'],
    ['杭州', '宁波', '温州', '绍兴', '湖州']
];

字符串的数组特性

js
1. 字符串具有一部分数组特性
   有lenght属性,可以读取到字符串的长度; 但是length的值不能像数组一样修改
   可以通过索引读取到某个字符,但是不能修改单个字符
2. 字符串这种具有一部分数组特性但又不是数组的数据,统称为类数组(伪数组 Like-Array)