2013-10-05 33 views
-1

我需要一个函数,我可以输入具有可变数目的子阵列的数组。 函数应该添加每个位置的子阵列的数量。 这是具有三个子阵列的示例输入阵列(也可以是两个或多个):在javascript中添加可变数组元素的元素

[ [ [ 12 ], [ 8 ], [ 2 ], [ 9 ], [ 2 ], [ 2 ] ], 
     [ [ 3 ], [ 4 ], [ 2 ], [ 3 ], [ 2 ], [ 2 ] ], 
     [ [ 6 ], [ 2 ], [ 2 ], [ 3 ], [ 2 ], [ 2 ] ] ] 

函数应输出:

[ 21, 14, 6, 15, 6, 6 ] 
+1

,你到目前为止做了什么? – trrrrrrm

+0

'function addarrays(){ var outputarray = []; asyncLoop2(arguments.length-2, function(loop){ outputarray = addtwoarrays(arguments [i],arguments [i + 1]); loop.next(); },function(){return outputarray; }); }”“功能addarrays(){ VAR outputarray = []; asyncLoop2(的arguments.length-2, 函数(循环){ outputarray = addtwoarrays(参数[I],自变量[I + 1]); loop.next(); },function(){return outputarray;}); } [这里](http://moourl.com/ai24t)是异步循环功能,我打电话给 –

回答

1
var data = [ [ [ 12 ], [ 8 ], [ 2 ], [ 9 ], [ 2 ], [ 2 ] ], 
     [ [ 3 ], [ 4 ], [ 2 ], [ 3 ], [ 2 ], [ 2 ] ], 
     [ [ 6 ], [ 2 ], [ 2 ], [ 3 ], [ 2 ], [ 2 ] ] ]; 

function adder(inputData) { 
    var resultArray = new Array(inputData[0].length); 
    for (var i = 0, len = inputData.length; i < len; i += 1) { 
     for (var j = 0, len1 = inputData[i].length; j < len1; j += 1) { 
      if (resultArray[j]) { 
       resultArray[j] += parseInt(inputData[i][j]); 
      } else { 
       resultArray[j] = parseInt(inputData[i][j]); 
      } 
     } 
    } 
    return resultArray; 
} 

console.log(adder(data)); 

结果

[ 21, 14, 6, 15, 6, 6 ] 
+0

快速回答哇,已经采取了我一个星期左右,thx人 –

+0

@MichaelMoeller不客气:) – thefourtheye

1
function sumSubArrays(array) { 
    if (array.length == 0) { 
     return new Array(); 
    } 
    var resultLength = array[0].length; 
    var result = new Array(resultLength); 
    for (var i = 0; i < resultLength; i++) { 
     var tmp = 0; 
     for (var j = 0; j < array.length; j++) { 
      tmp += array[j][i][0]; 
     } 
     result[i] = tmp; 
    } 
    return result; 
} 
+0

工作很棒,thx –