Google App Script разбивает единичный элемент на 1D массив с несколькими элементами - PullRequest
0 голосов
/ 17 января 2020

Я создал собственный скрипт в GAS (для Google Sheets), чтобы я мог объединить несколько источников данных в один уникальный дисплей. Я добавил .splice в середине, чтобы я мог вырезать все нулевые элементы внутри массивов (что означало удаление пустых строк в возвращаемом массиве).

Вот как работает код:

function COMPILER(){

var i;
var c;
var r;
var display = [];

for (i = 0; i < arguments.length; i++) {
for (c = 0; c < arguments[i].length;c++) {

display.push(arguments[i][c]);

};};

for (r = display.length-1; r >= 0; r--) {

if (display[r][1]==""){

display.splice(r, 1)

};};

return display

};

Код отлично работает с 2 + D массивами и с 1D массивами, которые имеют 2+ элементов; но когда он работает с одномерными массивами, которые имеют только один элемент, он непреднамеренно разбивает строки на несколько элементов.

Вместо возврата:

ar1
ar2

Возвращает

a
r
1
a
r
2

Как мне решить эту проблему?

1 Ответ

1 голос
/ 17 января 2020

Я думаю / предполагаю, что вы пытаетесь это сделать:

function COMPILER()
{
    var display = [];

    for(var i = 0, numArguments = arguments.length; i < numArguments; ++i)
    {
        //console.log([i, arguments[i], Array.isArray(arguments[i])]);
        if(Array.isArray(arguments[i]))
        {
            for(var j = 0, len = arguments[i].length; j < len; ++j)
            {
                if(arguments[i][j] != "")
                {
                    display.push(arguments[i][j]);
                }
            }
        }
        else if(arguments[i] != "")
        {
            display.push(arguments[i]);
        }
    }

    return display;
}

Я не могу подтвердить / проверить, потому что я не знаю, как вы звоните COMPILER.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...