You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript 处理数字数组中大于9的元素减9操作代码不生效问题

JavaScript数组元素处理问题解决方案

问题根因

Array.prototype.forEach() 方法本身无返回值,且回调函数中的return语句仅会终止当前次循环,不会把计算结果存入原数组,你计算出的evenSums - 9没有被存储到任何变量/位置,因此代码无报错但没有实际效果。

正确实现方式

方式1:使用map方法(推荐,不修改原数组)

map方法会遍历数组所有元素,将每次回调函数的返回值组合为新数组返回,你之前用map未生效大概率是没有接收返回的新数组:

const evenSum = [4, 4, 0, 12, 0, 10, 2, 8];
// 接收处理后的新数组
const processedEvenSum = evenSum.map(item => {
  return item > 9 ? item - 9 : item;
});
// 如果需要覆盖原数组,可以直接赋值 evenSum = processedEvenSum

方式2:使用forEach修改原数组

借助forEach回调的索引参数直接修改原数组对应位置的值:

const evenSum = [4, 4, 0, 12, 0, 10, 2, 8];
evenSum.forEach((item, index, originArr) => {
  if(item > 9) {
    originArr[index] = item - 9;
  }
});

方式3:使用for循环修改原数组

const evenSum = [4, 4, 0, 12, 0, 10, 2, 8];
for(let i = 0; i < evenSum.length; i++) {
  if(evenSum[i] > 9) {
    evenSum[i] -= 9;
  }
}

以上三种方式运行后,最终处理结果均为 [4, 4, 0, 3, 0, 1, 2, 8]。

内容的提问来源于stack exchange,提问作者seth8656

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:54:00