数组操作
2024年12月6日大约 3 分钟
在 JavaScript 中,数组是一种用于存储有序数据集合的对象。数组可以包含任意类型的数据,包括数字、字符串、对象、甚至其他数组。以下是数组的常用用法和操作:
1. 创建数组
// 使用数组字面量
let arr1 = [1, 2, 3, 4];
// 使用构造函数
let arr2 = new Array(5); // 创建一个长度为 5 的空数组
let arr3 = new Array(1, 2, 3); // [1, 2, 3]2. 访问和修改数组元素
- 通过索引访问: 索引从
0开始。 - 通过索引修改:
let arr = [10, 20, 30];
console.log(arr[0]); // 输出 10
arr[1] = 25; // 修改第二个元素
console.log(arr); // 输出 [10, 25, 30]3. 数组长度
- 访问长度:
let arr = [1, 2, 3];
console.log(arr.length); // 输出 3- 动态调整长度:
let arr = [1, 2, 3, 4];
arr.length = 2; // 截断数组
console.log(arr); // 输出 [1, 2]4. 添加和删除元素
- 添加:
- 使用
push()添加到末尾。 - 使用
unshift()添加到开头。
- 使用
let arr = [1, 2];
arr.push(3); // [1, 2, 3]
arr.unshift(0); // [0, 1, 2, 3]- 删除:
- 使用
pop()删除末尾元素。 - 使用
shift()删除开头元素。
- 使用
let arr = [1, 2, 3];
arr.pop(); // [1, 2]
arr.shift(); // [2]5. 遍历数组
for循环:
let arr = [10, 20, 30];
for (let i = 0; i < arr.length; i++) {
console.log(arr[i]);
}for...of循环:
for (let value of arr) {
console.log(value);
}forEach方法:
arr.forEach((value, index) => {
console.log(index, value);
});6. 常用数组方法
查找
indexOf()/lastIndexOf(): 返回指定元素的索引。
let arr = [1, 2, 3, 2];
console.log(arr.indexOf(2)); // 输出 1
console.log(arr.lastIndexOf(2)); // 输出 3includes(): 检查数组是否包含某元素。
console.log(arr.includes(3)); // 输出 true筛选和操作
filter(): 筛选符合条件的元素。
let arr = [1, 2, 3, 4];
let result = arr.filter(x => x > 2); // [3, 4]map(): 对每个元素执行操作,返回新数组。
let squares = arr.map(x => x * x); // [1, 4, 9, 16]reduce(): 累积操作。
let sum = arr.reduce((acc, val) => acc + val, 0); // 输出 10排序
sort(): 排序,默认按字典顺序。
let arr = [3, 1, 4, 2];
arr.sort(); // [1, 2, 3, 4]
// 自定义排序
arr.sort((a, b) => a - b); // 升序
arr.sort((a, b) => b - a); // 降序合并与分割
concat(): 合并数组。
let arr1 = [1, 2];
let arr2 = [3, 4];
let combined = arr1.concat(arr2); // [1, 2, 3, 4]slice(): 提取子数组,不修改原数组。
let arr = [1, 2, 3, 4];
let subArr = arr.slice(1, 3); // [2, 3]splice(): 修改数组,插入、删除、替换元素。
let arr = [1, 2, 3, 4];
arr.splice(1, 2, 99); // 删除 2 个元素,从索引 1 开始,插入 99
console.log(arr); // [1, 99, 4]7. 其他有用方法
reverse(): 翻转数组。
let arr = [1, 2, 3];
arr.reverse(); // [3, 2, 1]join(): 将数组转换为字符串。
let arr = [1, 2, 3];
console.log(arr.join('-')); // 输出 "1-2-3"find()/findIndex(): 查找满足条件的元素或其索引。
let arr = [1, 2, 3, 4];
let found = arr.find(x => x > 2); // 3
let index = arr.findIndex(x => x > 2); // 2总结
数组是 JavaScript 中非常强大的数据结构。根据场景选择合适的方法可以更高效地处理数据,例如使用 map 和 filter 处理复杂的数组操作。