假设这是我想在AngularJS视图(荷兰语)中发布的一些数据:
$scope.data =
[
{
name: "actief",
value: null,
children:
[
{
name: "vast actief",
value: [20, 30, 40, 50],
children: null
},
{
name: "vlottend actief",
value: [215, 230, 245, 500],
children: null
},
{
name: "bewegend actief",
value: [134, 135, 136, 137],
children: null
}
]
},
{
name: "stilstaand",
value: null,
children:
[
{
name: "vast stilstaand",
value: [2000, 3000, 4000, 5000],
children: null
},
{
name: "vlottend stilstaand",
value: [2150, 2300, 2450, 5000],
children: null
},
{
name: "bewegend stilstaand",
value: [1340, 1350, 1360, 1370],
children: null
}
]
}
];
要在我的视图的列表中发布此对象,我可以执行以下操作:
<ul ng-repeat="item in data">
<li>{{item.name}}</li>
<ul ng-repeat="child in item.children">
<li>{{ child.name }}</li>
<ul ng-repeat="value in child.value">
<li>{{ value }}</li>
</ul>
</ul>
</ul>
我希望我的父对象{{ item name }}
有一个包含子项总和的数组,例如:第一个父级将拥有此数组:[369, 395, 421, 687]
我试图在我的控制器内进行此计算(我知道,控制器中没有逻辑,但仅用于测试)
for (var i = 0; i < $scope.data.length; i++){
$scope.data[i].value = [];
for (var j = 0; j < $scope.data[i].children.length; j++) {
if ($scope.data[i].children[j].value.length > 0) {
for (var k = 0; k < $scope.data[i].children[j].value.length; k++) {
console.log(typeof $scope.data[i].children[j].value[k]); // says number!
$scope.data[i].value[k] += $scope.data[i].children[j].value[k]; // But my array is NAN???
}
}
}
}
我的父值数组中有4个位置,但其中有NaN
,我做错了什么?
旁边问题:
因为我在我的视图中进行循环,是不是有更短的方法来计算那里的数组位置的总数?
答案 0 :(得分:0)
此语法
$scope.data[i].value[k] += ... // some value
假设数组的k
位置已经有一个值要递增。
在您的代码中,数组最初为空。发生的事情是这样的:
var myArray = [];
myArray[0] += 1; // error: there is no element at the 0 position!
解决此问题的一种方法是使用零值初始化空数组:
$scope.data[i].value = [0, 0, 0, 0]; // you can also seed the initial zeroes using a loop