【javascript数组】在JavaScript中,数组是一种非常常用的数据结构,用于存储多个值。它允许我们以有序的方式组织和访问数据。数组可以包含任何类型的数据,如数字、字符串、对象,甚至其他数组。
以下是对JavaScript数组的一些关键点总结,并通过表格形式进行清晰展示。
一、JavaScript数组基础
| 特性 | 说明 |
| 定义 | 数组是用于存储多个值的集合,每个值称为一个元素。 |
| 索引 | 数组中的元素通过索引访问,索引从0开始。 |
| 动态 | JavaScript数组是动态的,可以随时添加或删除元素。 |
| 类型 | 数组可以包含不同类型的元素(如数字、字符串、对象等)。 |
| 长度 | 使用`length`属性获取数组的长度。 |
二、创建数组的方式
| 方法 | 示例 | 说明 |
| 字面量 | `let arr = [1, 2, 3];` | 最简单直接的创建方式。 |
| 构造函数 | `let arr = new Array(1, 2, 3);` | 使用`Array()`构造函数创建数组。 |
| 空数组 | `let arr = [];` | 创建一个空数组。 |
| 指定长度 | `let arr = new Array(5);` | 创建一个长度为5的空数组。 |
三、常用数组方法
| 方法 | 说明 | 示例 |
| `push()` | 在数组末尾添加一个或多个元素 | `arr.push(4)` |
| `pop()` | 删除并返回数组最后一个元素 | `arr.pop()` |
| `shift()` | 删除并返回数组第一个元素 | `arr.shift()` |
| `unshift()` | 在数组开头添加一个或多个元素 | `arr.unshift(0)` |
| `slice()` | 返回数组的一部分 | `arr.slice(1, 3)` |
| `splice()` | 修改数组内容(删除/添加) | `arr.splice(1, 1, 'a')` |
| `concat()` | 合并两个或多个数组 | `arr.concat([4, 5])` |
| `indexOf()` | 返回指定元素的第一个索引 | `arr.indexOf(2)` |
| `includes()` | 判断数组是否包含某个元素 | `arr.includes(2)` |
四、数组遍历方式
| 方法 | 说明 | 示例 |
| `for` 循环 | 基本的循环方式 | `for (let i = 0; i < arr.length; i++) { ... }` |
| `for...of` 循环 | 遍历数组元素 | `for (let item of arr) { ... }` |
| `forEach()` | 对数组每个元素执行一次回调 | `arr.forEach(item => console.log(item))` |
| `map()` | 创建一个新数组,结果是原数组每个元素调用函数后的返回值 | `arr.map(x => x 2)` |
| `filter()` | 创建一个新数组,包含所有满足条件的元素 | `arr.filter(x => x > 2)` |
五、数组与对象的区别
| 特性 | 数组 | 对象 |
| 键类型 | 数字索引 | 字符串键(可自定义) |
| 顺序 | 有序 | 无序(ES6之后按插入顺序) |
| 访问方式 | `arr[0]` | `obj.key` 或 `obj['key']` |
| 用途 | 存储列表数据 | 存储键值对数据 |
六、常见问题与注意事项
- 避免使用`for...in`遍历数组:因为`for...in`会遍历所有可枚举属性,包括继承来的属性。
- 注意数组的浅拷贝:使用`slice()`或`concat()`可以实现浅拷贝,但嵌套数组需要深拷贝。
- 不要将数组作为对象使用:虽然JavaScript数组是对象的一种,但它们的行为更接近于列表。
通过以上内容,我们可以看到JavaScript数组的强大功能和灵活性。掌握数组的基本操作和方法,是编写高效、可维护代码的重要一步。


