嵌套for循环和备用映射方法
Nested for loop and alternate map method
我是javascript的初学者,所以如果这个问题太简单,请原谅我。我想简化这个函数
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
来实现这个计算。
我能看到的第一个问题是结果数组未初始化,因此结果将是NaN
,因为您正在将undefined
值添加到数字。
var calculateTotal = function(nodeData) {
var totalSelectedUnit = nodeData.items.map(function(item) { //create a result value for each item in the items array
return item.usage.categories.slice($scope.selectFrom, $scope.selectTo).reduce(function(v1, v2) { //sum up values between the from and to index
return v1 + (v2 || 0); //ignore the falsy values
}, 0);
})
console.log(totalSelectedUnit);
};
var $scope = {
selectFrom: 0,
selectTo: 4
};
var nodeData = {
items: [{
usage: {
categories: [2, 3, 4, 5, 6, 7, 8, 9, 1]
}
}, {
usage: {
categories: [12, 13, 14, 15, 16, 17, 18, 19, 10]
}
}, {
usage: {
categories: [22, 23, 24, 25, 26, 27, 28, 29, 20]
}
}]
};
calculateTotal(nodeData);
相关文章:
- 在内部映射值时渲染方法中断
- 有没有一种简单的方法可以用Lodash映射嵌套数据
- Java Script将对象方法映射到数组中的对象
- 在JavaScript中搜索数组映射的最有效方法
- 操作映射触发控制器中的错误方法
- 使用过滤器映射多点数据集的最佳方法是什么
- 在 iframe 中调用保存铯映射的方法
- 使用 lodash 是将数据从数组映射到单个数组的好方法
- 如何在链接筛选和映射方法时获取筛选的索引
- 有没有一种简单/快速的方法将“data-”属性映射到大小写混合的属性名称
- Angular2 Http 请求返回没有映射方法的可观察性
- 字符串元素数组上的 Javascript 映射方法
- 余烬数据 - 适配器没有方法“映射”
- 有没有一种方法可以创建与Java<->JSON映射对象,如JSON.stringfy(jsObject)创建的
- jQuery:有没有一种通用的方法可以获得元素属性的映射
- 在node.js或JavaScript中映射数组的干净方法
- ie 7的数组映射方法错误
- 嵌套for循环和备用映射方法
- 映射方法对除最后一个数组项外的所有数组项生效
- Javascript数组映射方法回调参数