我是一個JavaScript初學者,所以如果這個問題太簡單,請耐心等待。我試圖簡化此功能嵌套for循環和替代映射方法
var calculateTotal =function(nodeData){
var totalSelectedUnit0 = 0;
var totalSelectedUnit1 = 0;
var totalSelectedUnit2 = 0;
for(x=$scope.selectFrom; x<$scope.selectTo; x++){
totalSelectedUnit0 += nodeData.items[0].usage.categories[x].current;
totalSelectedUnit1 += nodeData.items[1].usage.categories[x].current;
totalSelectedUnit2 += nodeData.items[2].usage.categories[x].current;
}
console.log(totalSelectedUnit0);
console.log(totalSelectedUnit1);
console.log(totalSelectedUnit2);
};
calculateTotal(node);
這是我試圖重構代碼
var calculateTotal =function(nodeData){
var totalSelectedUnit=[];
for(i=0; i<nodeData.items.length; i++){
for(x=$scope.selectFrom; x<$scope.selectTo; x++){
totalSelectedUnit[i] += nodeData.items[i].usage.categories[x].current;
}
}
console.log(totalSelectedUnit);
};
有幾件事情,我想在這裏實現。計算應忽略null
或Nan
值。我也想用map
和reduce
來實現這個計算。
您的功能似乎在第一次看到確定。它按預期工作嗎?什麼console.log(totalSelectedUnit);原因呢?在特定情況下是否有錯誤? – Aschab
如果你想忽略'x + = y'中的'null'或'NaN'值,你可以說'x + = y || 0'(注意[JavaScript的邏輯運算符](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators)的工作方式與大多數其他語言的工作方式不同)。在'for'循環之前,你還需要'totalSelectedUnit [i] = 0'。我不認爲'.map()'在這裏很有意義。 – nnnnnn
關於你的錯誤,是否所有'nodeData.items'數組條目都有'usage'屬性? – nnnnnn