Добавить многомерный массив в нижней части другого многомерного массива JavaScript - PullRequest
4 голосов
/ 12 июля 2019

У меня есть два массива с 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
}

Ответы [ 3 ]

3 голосов
/ 13 июля 2019

Вы можете просто использовать ...spread syntax для объединения двух массивов

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 голосов
/ 13 июля 2019

Просто нажмите в результате

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);
1 голос
/ 12 июля 2019

Попробуйте, не очень умно, но это работает с данными вашего примера

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]}
}

Вот лучший способ:

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
}
...