可以用for循环通过索引直接修改数组元素,如for(let i=0; i<arr.length; i++) arr[i] = 新值,原地更新无需返回。

可以直接用 for 循环配合索引修改数组元素,关键是要通过下标(i)访问并赋值,而不是只读取 arr[i] 的值。
基础写法:用索引直接赋值
最常用也最安全的方式是用标准的三段式 for 循环,通过 arr[i] = 新值 修改原数组:
- 循环变量
i从0开始,小于arr.length - 每次迭代中,
arr[i]是可写的左值,可直接重新赋值 - 修改的是原数组,无需额外返回或赋值
示例:把数组中每个数字翻倍
const nums = [1, 2, 3, 4];
for (let i = 0; i < nums.length; i++) {
nums[i] = nums[i] * 2;
}
console.log(nums); // [2, 4, 6, 8]
注意避免常见误区
以下写法看似类似,但不会修改原数组:
立即学习“Java免费学习笔记(深入)”;
-
for (let item of arr) { item = ... }——item是副本,改它不影响原数组 for (let i = 0; i —— 只改了局部变量 <code>x- 在循环中直接
push/pop同时遍历 —— 可能跳过或重复处理元素,长度变化需格外小心
需要条件修改时,加 if 判断即可
比如只把偶数加 10,奇数不变:
const arr = [1, 4, 3, 8, 5];
for (let i = 0; i < arr.length; i++) {
if (arr[i] % 2 === 0) {
arr[i] += 10;
}
}
console.log(arr); // [1, 14, 3, 18, 5]
修改同时依赖前/后元素?注意索引边界
例如“将每个元素除以它前面的元素”(跳过第一个):
- 循环从
i = 1开始,避免访问arr[-1] - 确保前一项不为 0,防止除零错误
- 修改
arr[i]不影响后续arr[i-1]的读取(因为只读前一个)
示例:
const data = [2, 4, 8, 24];
for (let i = 1; i < data.length; i++) {
if (data[i - 1] !== 0) {
data[i] = data[i] / data[i - 1];
}
}
console.log(data); // [2, 2, 2, 3]


















