[英]JavaScript Total Returns NaN
我試圖使用JavaScript對一組對象求和,但不顯示86的預期結果,而是顯示NaN
。
注意:我無法編輯對象數組!
var objects = [{"ID":"--"},{"ID":"58"},{"ID":"28"}]; var sum = 0; id = objects; for (var i = 0; i < id.length; i++) { sum += +id[i].ID; } document.getElementById('here').innerHTML = "<b>Total:</b>" + sum; objects.forEach(function(key) { var a = document.createElement("p"); a.innerHTML = key.ID; document.getElementById('here').appendChild(a); });
<div id="here"></div>
JsFiddle: https ://jsfiddle.net/ru266x7m/
請注意,這不是Object返回NaN的副本, 當和值為因為我已經有代碼行var sum = 0;
如果值為isFinite,您可以插入一個檢查。
if (isFinite(id[i].ID)) {
sum += +id[i].ID;
}
var objects = [{"ID":"--"},{"ID":"58"},{"ID":"28"}]; var sum = 0; id = objects; for (var i = 0; i < id.length; i++) { if (isFinite(id[i].ID)) { sum += +id[i].ID; } } document.getElementById('here').innerHTML = "<b>Total: </b>" + sum; objects.forEach(function(key) { var a = document.createElement("p"); a.innerHTML = key.ID; document.getElementById('here').appendChild(a); });
<div id="here"></div>
您的第一個數據點是{"ID":"--"}
你不能添加--
並從中獲取一個整數。
"--" + 1
是NaN
如果您希望此返回實際數字,則必須添加實際數字
更新
如果需要檢查值,請在循環中使用parseInt
和isNaN
var value = parseInt(id[i].ID. 10);
var valid = isNaN(value);
if (valid){
sum += value;
}
您可以使用isNaN
類型檢查來檢查任何值的有效性(表示不是數字)。 如果ID
是數字或字符串編號,則類型檢查器將返回false。
var objects = [{"ID":"--"},{"ID":"58"},{"ID":"28"}]; var sum = objects.reduce((s, o) => console.log(o.ID) || s + (isNaN(o.ID) ? 0 : +o.ID), 0); console.log('Total: ' + sum);
使用Number
構造函數的優化版本, isNan
函數和documentFragment
( 只創建一個循環而不是兩個循環 ):
var objects = [{"ID":"--"},{"ID":"58"},{"ID":"28"}]; var sum = 0, hereEl = document.getElementById('here'), f = document.createDocumentFragment(); objects.forEach(function(key) { var p = document.createElement("p"), num = Number(key.ID); p.innerHTML = key.ID; sum += !isNaN(num)? num : 0; f.appendChild(p); }); hereEl.innerHTML = "<b>Total:</b>" + sum; hereEl.appendChild(f);
<div id="here"></div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.