切换主题
Array(数组)
创建数组
1. 数组字面量
javascript
const fruits = ['apple', 'banana', 'orange'];
const numbers = [1, 2, 3, 4, 5];
const mixed = [1, 'hello', true, { name: 'John' }];2. Array 构造函数
javascript
const arr1 = new Array(3); // [undefined, undefined, undefined]
const arr2 = new Array(1, 2, 3); // [1, 2, 3]3. Array.from()
javascript
const str = 'hello';
const arr = Array.from(str); // ['h', 'e', 'l', 'l', 'o']
const set = new Set([1, 2, 3]);
const arr2 = Array.from(set); // [1, 2, 3]数组方法
1. 修改数组
push(): 在数组末尾添加元素pop(): 删除并返回数组最后一个元素shift(): 删除并返回数组第一个元素unshift(): 在数组开头添加元素splice(): 删除、替换或添加元素reverse(): 反转数组sort(): 排序数组
2. 访问数组
indexOf(): 查找元素首次出现的位置lastIndexOf(): 查找元素最后出现的位置includes(): 检查数组是否包含某个元素find(): 返回满足条件的第一个元素findIndex(): 返回满足条件的第一个元素的索引
3. 遍历数组
forEach(): 遍历数组元素map(): 映射数组元素filter(): 过滤数组元素reduce(): 归并数组元素some(): 检查是否有元素满足条件every(): 检查是否所有元素都满足条件
4. 数组转换
join(): 将数组转换为字符串split(): 将字符串转换为数组toString(): 将数组转换为字符串toLocaleString(): 将数组转换为本地化字符串
高级用法
1. 数组解构
javascript
const [first, second, ...rest] = [1, 2, 3, 4, 5];
console.log(first); // 1
console.log(second); // 2
console.log(rest); // [3, 4, 5]2. 展开运算符
javascript
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5]; // [1, 2, 3, 4, 5]3. 数组方法链式调用
javascript
const numbers = [1, 2, 3, 4, 5];
const result = numbers
.filter(n => n > 2)
.map(n => n * 2)
.reduce((sum, n) => sum + n, 0);性能考虑
- 使用
push()和pop()而不是unshift()和shift() - 避免频繁创建新数组
- 使用
Set去重 - 使用
TypedArray处理大量数值数据 - 考虑使用
ArrayBuffer处理二进制数据
常见问题
- 数组浅拷贝与深拷贝
- 数组去重方法
- 数组排序稳定性
- 稀疏数组的处理
- 数组方法对原数组的影响