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

JavaScript中修改数组元素:将大于9的元素替换为减9后的值

数组元素替换:将大于9的元素减9替换原位置

给定数组:
finalCredDigits = [10, 8, 18, 9, 16, 6, 16, 5, 14, 3, 14, 6, 10, 5, 8]

需求是把数组中所有大于9的元素减去9后替换原位置元素,而非新增到数组末尾。以下是几种可行方案:

方案1:使用forEach修改原数组

forEach的回调函数可以获取当前元素的索引,直接通过索引修改原数组对应位置的值,避免push新增元素:

const finalCredDigits = [10, 8, 18, 9, 16, 6, 16, 5, 14, 3, 14, 6, 10, 5, 8];

finalCredDigits.forEach((num, index) => {
  if (num > 9) {
    finalCredDigits[index] = num - 9;
  }
});

console.log(finalCredDigits);
// 输出: [1, 8, 9, 9, 7, 6, 7, 5, 5, 3, 5, 6, 1, 5, 8]

方案2:使用map生成新数组(推荐,不修改原数组)

map方法会返回一个全新数组,原数组保持不变,更符合函数式编程风格:

const finalCredDigits = [10, 8, 18, 9, 16, 6, 16, 5, 14, 3, 14, 6, 10, 5, 8];

const modifiedDigits = finalCredDigits.map(num => num > 9 ? num - 9 : num);

console.log(modifiedDigits);
// 输出: [1, 8, 9, 9, 7, 6, 7, 5, 5, 3, 5, 6, 1, 5, 8]

方案3:使用基础for循环

兼容性最好的写法,适合所有环境:

const finalCredDigits = [10, 8, 18, 9, 16, 6, 16, 5, 14, 3, 14, 6, 10, 5, 8];

for (let i = 0; i < finalCredDigits.length; i++) {
  if (finalCredDigits[i] > 9) {
    finalCredDigits[i] -= 9;
  }
}

console.log(finalCredDigits);
// 输出: [1, 8, 9, 9, 7, 6, 7, 5, 5, 3, 5, 6, 1, 5, 8]

内容的提问来源于stack exchange,提问作者Saim Ali Nadeem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:01:11