Google Sheets: вернуть многомерный массив (JavaScript) - PullRequest
0 голосов
/ 12 апреля 2019

Предположим, у меня есть четыре существующих массива:

var one =   ["apple","banana","berry"];
var two =   ["fobar", "barfoo", "farboo"];
var three = [13, 421];
var four =  ["seven", "eight", "eleven"];

Как мне объединить их в один массив и вернуть его самым простым способом? Что я получил, это

var result = [один, два, три, четыре];

в результате

|-----------------------------|
|  apple  |  banana  | berry  |  
|  foobar |  barfoo  | farboo |  
|  13     |  421     |        |
|  seven  |  eight   | eleven |
|-----------------------------|

Однако, что мне действительно нужно, это:

|------------------------------------|
|  apple  |  foobar  | 13  |  seven  |
|  banana |  barfoo  | 421 |  eight  |
|  berry  |  farboo  |     |  eleven |
|------------------------------------|

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Попробуйте

var output = one.map(function(e,i){
  return [e].concat([two, three, four].map(function(f){
    return f[i] === undefined ? '': f[i];
  }))
})
console.info(output);
1 голос
/ 12 апреля 2019

JavaScript не имеет многомерных массивов, он имеет массивы массивов.

Если у вас еще нет массивов one, two, three, four,вы можете сделать это с одним вложенным литералом:

var result = [
    ["apple", "fobar", 13, "seven"],
    ["banana", "barfoo", 421, "eight"],
    ["berry", undefined, "eleven"]
];

Live Пример:

var result = [
    ["apple", "fobar", 13, "seven"],
    ["banana", "barfoo", 421, "eight"],
    ["berry", "farboo", undefined, "eleven"]
];
console.log(result);
.as-console-wrapper {
  max-height: 100% !important;
}

Если они у вас уже есть, так как они являются массивами значений столбцов и, очевидно, вы хотите, чтобы подмассивы были значениями строк, необходимо выполнить цикл:

var result = [];
for (var i = 0; i < 3; ++i) {
    result[i] = [
        one[i], two[i], three[i], four[i]
    ];
}

Live Пример:

var one =   ["apple","banana","berry"];
var two =   ["fobar", "barfoo", "farboo"];
var three = [13, 421];
var four =  ["seven", "eight", "eleven"];
var result = [];
for (var i = 0; i < 3; ++i) {
    result[i] = [
        one[i], two[i], three[i], four[i]
    ];
}
console.log(result);
.as-console-wrapper {
  max-height: 100% !important;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...