Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用仅返回一级的和展平数组的数组_Javascript - Fatal编程技术网

Javascript 用仅返回一级的和展平数组的数组

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

我有一个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) => 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他从每个数组中插入总和,每个数组前面有多个成员。