JavaScript 的数组和迭代是处理数据集合的核心工具。以下是常见用法和关键概念总结:
创建数组
let arr1 = [1, 2, 3]; // 字面量
let arr2 = new Array(3); // 创建长度为3的空数组
访问元素
arr1[0] = 10; // 修改第一个元素
console.log(arr1[1]); // 输出 2
修改数组
push/pop
:尾部增删unshift/shift
:头部增删splice(start, deleteCount, ...items)
:增删改任意位置arr1.splice(1, 0, 'a'); // 在索引1插入'a',原元素后移
for (let i = 0; i < arr1.length; i++) {
console.log(arr1[i]);
}
forEach
arr1.forEach((item, index) => {
console.log(index, item);
});
map
const doubled = arr1.map(item => item * 2);
filter
const evens = arr1.filter(item => item % 2 === 0);
reduce
const sum = arr1.reduce((acc, item) => acc + item, 0);
find
/ findIndex
const firstEven = arr1.find(item => item % 2 === 0);
some
/ every
const hasNegative = arr1.some(item => item < 0); // 是否有负数
const allPositive = arr1.every(item => item > 0); // 是否全为正数
for...of
for (const item of arr1) {
console.log(item);
}
方法 | 返回值 | 是否修改原数组 | 用途 |
---|---|---|---|
forEach |
undefined |
❌ | 遍历 |
map |
新数组 | ❌ | 映射转换 |
filter |
过滤后的新数组 | ❌ | 筛选元素 |
reduce |
累积值 | ❌ | 聚合计算 |
splice |
被删除的元素组成的数组 | ✅ | 增删元素 |
const result = arr1
.map(x => x * 2)
.filter(x => x > 4)
.reduce((acc, x) => acc + x, 0);
map
, filter
等非破坏性方法。forEach
无法用 break
,可用 some/every
模拟:arr1.some(item => {
if (item === 2) return true; // 终止迭代
});
new Array(3)
会创建空槽位,某些方法(如 map
)会跳过空位。[...arr1, ...arr2]
keys()
, values()
, entries()
for (const [index, value] of arr1.entries()) {
console.log(index, value);
}
掌握这些方法后,可以根据场景灵活选择,写出简洁高效的代码!