我有一个对象数组,每个对象都包含一个其他对象的数组。我想使用reduce来总结所有这些数组的长度。要做到这一点,我似乎必须首先提供@JsonBackReference
检查......
typeof
似乎必须有一种方法可以在没有typeof的情况下执行此操作。有什么想法吗?
答案 0 :(得分:1)
为什么不使用起始值并检查a.subItems
是否为数组?
var totalTasks = $scope.list.reduce(function(r, a){
if ('subItems' in a && Array.isArray(a.subItems) {
return r + a.subItems.length;
}
return r;
}, 0);
答案 1 :(得分:1)
您所要做的就是为累加器提供初始值:
var totalTasks = $scope.list.reduce(function(num, el) {
return num + el.subItems.length;
}, 0);
// ^
您可以确定num
始终是一个数字。如果您需要检查el
是否确实存在且包含subItems
,您当然可以添加num + (el && el.subItems && el.subItems.length || 0)
)。