Javascript 用仅返回一级的和展平数组的数组
我有一个lodash展平函数,但我需要将所有嵌套数组的总和添加到结果中 例如,对于此AoA:Javascript 用仅返回一级的和展平数组的数组,javascript,Javascript,我有一个lodash展平函数,但我需要将所有嵌套数组的总和添加到结果中 例如,对于此AoA: [[[1,2,3],[1,5]], [[1,1,2]]] 结果应该是: [16,12,6,1,2,3,6,1,5,4,1,1,2] 什么是有效的方法 这就是我目前所做的,但它只返回了一个级别的总和: function buildDataFromAOA(aoa) { if (!aoa[0].length) return [aoa.reduce((sum, item) =&g
[[[1,2,3],[1,5]], [[1,1,2]]]
结果应该是:
[16,12,6,1,2,3,6,1,5,4,1,1,2]
什么是有效的方法
这就是我目前所做的,但它只返回了一个级别的总和:
function buildDataFromAOA(aoa) {
if (!aoa[0].length)
return [aoa.reduce((sum, item) => sum += item, 0)].concat(aoa);
let data = [];
for (var i = 0; i < aoa.length; i++) {
data = data.concat(buildDataFromAOA(aoa[i]))
}
return data;
}
函数buildDataFromAOA(aoa){
如果(!aoa[0].长度)
返回[aoa.reduce((总和,项目)=>总和+=项目,0)].concat(aoa);
让数据=[];
对于(变量i=0;i
您可以使用数组作为累加器,并在索引0处取零作为以下项目的总和
基本上,它将实际值与索引零的和值相加,并将实际值推送到累加器的末尾
如果找到数组,则检查数组的长度是否为1,如果数组的第一项/唯一项是数组,则将项变量设置为子数组,依此类推
然后使用相同的回调函数缩减数组,一个包含第一个元素的数组用于求和,其余元素用于数组的项
对于返回的数组,第一项被添加到实际累加器的第一项中,累加器与整个数组相关并返回
var数组=[[1,2,3],[1,5],[[1,1,2]],
结果=数组.reduce(函数fn(r,a){
变量t;
if(数组isArray(a)){
而(a.length===1&&Array.isArray(a[0]){a=a[0];}
t=a.reduce(fn[0]);
r[0]+=t[0];
返回r.concat(t);
}
r[0]+=a;
r、 推(a);
返回r;
}, [0]);
控制台日志(结果)代码>
作为控制台包装{max height:100%!important;top:0;}
实现此输出的逻辑是什么?也分享你的attempt@gurvinder372他从每个数组中插入总和,每个数组前面有多个成员。