JavaScript中将多维数组添加到不同的多维数组底部

4
我有两个n维数组arr1和arr2。我希望将arr2添加到arr1的底部,即将arr2作为行附加到arr1。
对于一维数组,我使用以下代码将arr2添加到arr1的列中,但我不知道如何修改它以添加行而不是列。
如果:
arr1 =  [[Id, From, To], [1.0, AA1, BB1], [2.0, AA2, BB2], [3.0, AA3, BB3]]

arr2 = [[Id, From, To], [4.0, AA4, BB4], [5.0, AA5, BB5], [6.0, AA6, BB6]]

result =  [[Id, From, To], [1.0, AA1, BB1], [2.0, AA2, BB2], [3.0, AA3, BB3], [4.0, AA4, BB4], [5.0, AA5, BB5], [6.0, AA6, BB6]]

谢谢

function conatArr(arr1, arr2) {

 var result = arr1.map(function(row, i){
 return row.concat(arr2[i]);
})
return result
}

1
你能提供两个数组及其结果数组的简单示例吗? - symlink
反转参数 (arr2, arr1) - zer00ne
我忘记了示例数据,非常抱歉。 - Einarr
我尝试反转参数,但它没有起作用,或者我做错了。 - Einarr
3个回答

3

您可以简单地使用...扩展语法来合并两个数组。

let arr1 =  [['Id', 'From', 'To'], [1.0, 'AA1', 'BB1'], [2.0, 'AA2', 'BB2'], [3.0, 'AA3', 'BB3']]

let arr2 = [['Id', 'From', 'To'], [4.0, 'AA4', 'BB4'], [5.0, 'AA5', 'BB5'], [6.0, 'AA6', 'BB6']]

let final = [...arr1, ...arr2.slice(1)]

console.log(final)


2
只需将push推入结果中。

arr1 =  [["Id", "From", "To"], [1.0, "AA1", "BB1"], [2.0, "AA2", "BB2"], [3.0, "AA3", "BB3"]]

arr2 = [["Id", "From", "To"], [4.0, "AA4", "BB4"], [5.0, "AA5", "BB5"], [6.0, "AA6", "BB6"]]

var result = [];

result.push(arr1[0]);

for (i = 1; i < arr1.length; i++)
{
  result.push(arr1[i]);
  result.push(arr2[i]);  
}

console.log(result);


我曾尝试过像这样找出一个解决方案,但失败了,谢谢你向我展示如何做到这一点。 - Einarr

1

尝试这个,虽然不是很聪明,但可以处理你的示例数据

function combineArrays(shtName, arr1,arr2) {
 var sht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(shtName);
 var result =[];

for (i=0;i< arr1.length + arr2.length;i++) {
  if(i < arr1.length) {result[i]=arr1[i]}
  else{result[i] = arr2[i-arr1.length]}
}

Here is the better way:

function conatArrAsRows(shtName, arr1, arr2, postback) {
var sht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(shtName);

var result = arr1.concat(arr2);

if(postback == true) {sht.getRange(1,1,result.length,result[0].length).setValues(result)};
return result
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接