我是一个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