Leo*_*ssi 4 javascript arrays reduce angularjs
我有以下数组:
myData = [[2, null, null, 12, 2],
[0, 0, 10, 1, null],
undefined];
Run Code Online (Sandbox Code Playgroud)
我想计算每个子数组的总和,所以在我的情况下,结果应该是这种形式的数组:result = [16, 11, 0].这意味着,null和undefined由零所取代.
如果我没有最后一个元素,我的方法可以正常工作undefined:
MyCtrl.sum = MyCtrl.myData.reduce(function (r, a) {
a.forEach(function (b, i) {
r[i] = (r[i] || 0) + b;
});
return r;
}, []);
Run Code Online (Sandbox Code Playgroud)
如果有一个null或undefined作为一个子数组,我尝试了一些方法返回零,但我不知道如何:
MyCtrl.sum = MyCtrl.myData.reduce(function (r, a) {
if(a) {
a.forEach(function (b, i) {
r[i] = (r[i] || 0) + b;
}); } else {
r[i] = 0;
}
return r;
}, []);
Run Code Online (Sandbox Code Playgroud)
它说'i'没有在else分支上定义.
你知道任何解决方案吗?
您可以通过检查内部数组来映射值,如果没有给出,则将数组作为默认值.
对于添加,您可以在reduce中使用零作为默认值,零作为起始值.
var array = [[2, null, null, 12, 2], [0, 0, 10, 1, null], undefined],
result = array.map(a => (a || []).reduce((s, v) => s + (v || 0), 0));
console.log(result);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |