数组 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)