我有一个对象数组,每个对象包含其他对象的数组。我想使用reduce求和所有这些数组的长度。为此,我似乎必须像这样先提供typeof
检查...
var totalTasks = $scope.list.reduce(function(a, b){
var aNum = 0, bNum = 0;
if(typeof a === "object" && a.subItems){
aNum = a.subItems.length
}
else{
aNum = a
}
if(b.subItems) {
bNum = b.subItems.length;
}
return aNum + bNum;
});
似乎必须要有一种没有typeof的方法。有任何想法吗?
最佳答案
您要做的就是为累加器提供一个初始值:
var totalTasks = $scope.list.reduce(function(num, el) {
return num + el.subItems.length;
}, 0);
// ^
在这里,您可以确保
num
始终是数字。如果需要检查el
是否确实存在并包含subItems
,则可以添加(cc)。关于javascript - 我如何使用数组归约求和不带typeof的对象属性长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36845259/