Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Google应用程序脚本将单个元素分解为包含多个元素的一维数组_Arrays_Google Apps Script_Multidimensional Array_Google Sheets - Fatal编程技术网

Arrays Google应用程序脚本将单个元素分解为包含多个元素的一维数组

Arrays Google应用程序脚本将单个元素分解为包含多个元素的一维数组,arrays,google-apps-script,multidimensional-array,google-sheets,Arrays,Google Apps Script,Multidimensional Array,Google Sheets,我已经用GAS为googlesheets创建了一个自定义脚本,这样我就可以将多个数据源连接到一个独特的显示中。我在中间添加了一个剪接,这样我就可以删除数组中的所有空元素,这意味着在返回数组中删除空白行。 下面是代码的运行方式: function COMPILER(){ var i; var c; var r; var display = []; for (i = 0; i < arguments.length; i++) { for (c = 0; c < arguments[i

我已经用GAS为googlesheets创建了一个自定义脚本,这样我就可以将多个数据源连接到一个独特的显示中。我在中间添加了一个剪接,这样我就可以删除数组中的所有空元素,这意味着在返回数组中删除空白行。 下面是代码的运行方式:

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数组和具有2+元素的1D数组;但是,当它处理只有一个元素的1D数组时,它会无意识地将字符串分解为几个元素

而不是返回:

ar1 ar2

它回来了

a R 1. A. R 二,


我怎样才能解决这个问题呢?

我想/假设这就是你想要做的:

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

我无法确认/测试,因为我不知道您如何调用编译器。

display.pusharguments[I]或display.push[arguments[I]。。。这取决于你想要什么。你能提供函数调用示例吗?我不知道你所说的2D数组和1D数组是什么意思。您只需要查看参数,它是所有参数的数组。可能有1个参数、2个参数或100个参数。编译器函数是如何调用的?谢谢你关于数组的介绍,已经更改了问题。我的数据主要是二维数组,Google工作表中的列和行填充了字符串。编译器函数应该做4件事:首先,它应该将参数中每个不规则数组中的数据连接到一个唯一的规则数组中,该数组的行数[i]和最大列数[C]。然后,它测试每一行中的空元素,并删除其中的空元素。最后,它将结果数组显示为一个唯一且有组织的笛卡尔平面,在该平面中,公式被称为=COMPILERArgument1'A:F;2'R2:T2;等等。我的问题是,当参数中的任何参数是一个1D数组,其中只有一个元素时,公式会将字符串分解为几个元素,而不是将其视为一个字符串中的元素。我在Google应用程序脚本清单中找不到对.isArray方法的任何引用,而且它似乎不是一种内置的方法相信我,我试过了。如果不是这样的话,你的解决方案会很好用,它是一个JavaScript函数。如果它在代码中不起作用,您可以添加它。检查我粘贴的Mozilla链接的Polyfill部分。我实际上没有使用您的代码,因为我正在处理数据库,这样做会丢失参数中元素的原始位置,但您的解决方案是正确的!我按照建议添加了.isArray方法,效果很好。谢谢