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
相关产品推荐
相关产品推荐

