我試圖添加以下內容,但它保持連接並返回一個字符串。JavaScript添加/彙總循環
var nums = [1.99, 5.11, 2.99];
var total = 0;
nums.forEach(function(i) {
total += parseFloat(i).toFixed(2);
});
是的,我需要它返回/與小數添加。不確定要做什麼
我試圖添加以下內容,但它保持連接並返回一個字符串。JavaScript添加/彙總循環
var nums = [1.99, 5.11, 2.99];
var total = 0;
nums.forEach(function(i) {
total += parseFloat(i).toFixed(2);
});
是的,我需要它返回/與小數添加。不確定要做什麼
如果您不存儲浮動字符串,則不需要使用parseFloat(i),它解析字符串中的浮動。你可以重寫此爲:
var nums = [1.99, 5.11, 2.99];
var total = 0;
nums.forEach(function(i) {
total += i;
});
var fixed = total.toFixed(2);
console.log(fixed);
或
var nums = [1.99, 5.11, 2.99];
var total = 0;
for(var i = 0; i < nums.length; i++){
total += nums[i];
}
var fixed = total.toFixed(2);
console.log(fixed);
在末尾調用'toFixed(2)'。 – Barmar
'forEach'裏面的'nums [i]'必須是'i',因爲第一個參數是forEach中的當前元素 – bugwheels94
您需要將'toFixed'的結果賦值給一個變量。 – Barmar
var nums = [1.99, 5.11, 2.99];
var total = 0;
nums.forEach(function(i) {
total += parseFloat(i);
});
alert(total.toFixed(2));
是的,它與小數
如果你想要一個更實用的方法,你也可以使用Array.reduce
:
var nums = [1.99, 5.11, 2.99];
var sum = nums.reduce(function(prev, cur) {
return prev + cur;
}, 0);
最後一個參數0
,是一個可選的起始值。
您可以避免將'0'作爲第二個參數傳遞。 – Pavlo
@Pavlo:謝謝,我用文檔鏈接更新了我的答案,以及有關'0'是可選的註釋。不過,我通常會包含可選的起始值,以使我的「reduce」調用的輸出更易於推理。 –
儘量減少,遞歸選項:
function sum(inputNums) {
var nums = inputNums;
var total = nums.reduce(function(previousValue, currentValue, index, array) {
return previousValue + currentValue;
});
alert('' + total);
}
sum([1.99, 5.11, 2.99]);
'.toFixed'返回一個字符串,所以你在做'0 + 「1.99」 + 「5.11」 + 「2.99」 '。相反,首先將它們全部添加,然後在顯示結果時*使用'toFixed'。 – Amadan
我認爲你剛剛得到錯誤的命令,並打算做'parseFloat(String(i).toFixed(2));' –
@Amadan你應該從中做出答案。這似乎是這裏所說的最完整的一切。 – Soana