好的,所以我想將 9 減去大于 9 的數字(陣列中的元素):
finalCredDigits = [10, 8, 18, 9, 16, 6, 16, 5, 14, 3, 14, 6, 10, 5, 8]
那就是我試過的
finalCredDigits.forEach(arr =>{
if(arr > 9){
finalCredDigits.push(arr - 9);
}
});
Output = [10, 8, 18, 9, 16, 6, 16, 5, 14, 3, 14, 6, 10, 5, 8, 1, 9, 7, 7, 5, 5, 1]
我知道它是因為結果被推入陣列但我想改變它并用超過 9 的數字替換答案
uj5u.com熱心網友回復:
您需要分配給陣列索引來替換元素,而不是推送新元素。
forEach()將第二個引數傳遞給回呼函式,包含當前索引。您可以將其用于作業。
const finalCredDigits = [10, 8, 18, 9, 16, 6, 16, 5, 14, 3, 14, 6, 10, 5, 8];
finalCredDigits.forEach((el, i) =>{
if(el > 9){
finalCredDigits[i] = el - 9;
}
});
console.log(finalCredDigits);
uj5u.com熱心網友回復:
如果你想要一個類似但新的陣列,你應該使用Array.map():
const finalCredDigits = [10, 8, 18, 9, 16, 6, 16, 5, 14, 3, 14, 6, 10, 5, 8];
const newFinalCredDigits = finalCredDigits.map(v => {
if (v > 9) {
return v - 9;
} else {
return v;
}
});
console.log(newFinalCredDigits.join());
console.log("Is new array?", newFinalCredDigits !== finalCredDigits);
如果你想用改變陣列本身,Array.forEach()你應該使用回呼的附加引數:
const finalCredDigits = [10, 8, 18, 9, 16, 6, 16, 5, 14, 3, 14, 6, 10, 5, 8];
finalCredDigits.forEach((v, i, array) => {
if (v > 9) {
array[i] = v - 9;
}
});
console.log(finalCredDigits.join());
但是函式式編程通常意味著更喜歡不可變狀態而不是可變狀態,因此如果您的陣列是共享的并且我們會用 對其進行變異Array.forEach(),它會被認為是一種代碼味道。因此,我會改用常規的 for 回圈:
const finalCredDigits = [10, 8, 18, 9, 16, 6, 16, 5, 14, 3, 14, 6, 10, 5, 8];
{
const l = finalCredDigits.length;
for (let i = 0; i < l; i) {
if (finalCredDigits[i] > 9) finalCredDigits[i] -= 9;
}
}
console.log(finalCredDigits.join());
uj5u.com熱心網友回復:
嘗試這個
let finalCredDigits = [10, 8, 18, 9, 16, 6, 16, 5, 14, 3, 14, 6, 10, 5, 8]
finalCredDigits = finalCredDigits.map(number => {
if (number > 9) {
return number - 9
}
return number
})
console.log(finalCredDigits)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/537344.html
