私は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
を使用したいと思います。
あなたの関数は、最初の一瞥でOKらしいです。それは期待どおりに働いていますか?どのようなconsole.log(totalSelectedUnit);与えるか?特定の状況下でエラーがありますか? – Aschab
'x + = y'の' null'や 'NaN'の値を無視したい場合は' x + = y || (JavaScriptの論理演算子(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators)は他のほとんどの言語と同じように動作しないことに注意してください) )。 'for'ループの前に' totalSelectedUnit [i] = 0'も必要です。私は '.map()'がここでは意味をなさないとは思わない。 – nnnnnn
あなたのエラーに関しては、 'nodeData.items'配列エントリはすべて' usage'プロパティを持っていますか? – nnnnnn