Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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
Javascript 支持具有多个输入的自定义函数中的数组_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 支持具有多个输入的自定义函数中的数组

Javascript 支持具有多个输入的自定义函数中的数组,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我在谷歌应用程序脚本中有一个自定义函数,它包含两个变量。我希望这个函数使用两个数组作为参数,但是标准的方法是使用“if input.map,return input.map(function)”来处理两个变量 我尝试过递归输入,但由于函数中有两个输入,因此不能同时使用这两个输入 这不是我正在使用的函数,但它也有同样的问题 function multiply(x,y) { if (x.map){ return x.map(multiply) } if (y.map)

我在谷歌应用程序脚本中有一个自定义函数,它包含两个变量。我希望这个函数使用两个数组作为参数,但是标准的方法是使用“if input.map,return input.map(function)”来处理两个变量

我尝试过递归输入,但由于函数中有两个输入,因此不能同时使用这两个输入

这不是我正在使用的函数,但它也有同样的问题

function multiply(x,y)
{
    if (x.map){
    return x.map(multiply)
    }
    if (y.map){
    return y.map(multiply)
    }
    return x * y
}
我希望公式采用两个数组(即A1:A5、B1:B5)并对每个变量执行函数——即返回A1*B1、A2*B2等。

问题:
  • multiply
    接收两个参数。当
    multiply
    作为函数参数提供给
    Array.map
    时,第一个参数将是调用map的数组的元素,第二个参数将是元素的索引
解决方案:
  • 仅在第一个数组
    x
    上使用map,然后使用对应的第二个数组
    y
片段:
函数乘法(x,y){
如果(x.map){
返回x.map(函数(像素,i){
yEl=y.map?y[i]:y;//对应的y元素
返回乘法(xEl,yEl);
});
}
如果(y.map){//使用,当y是数组,x是数字时
返回乘法(y,x);
}
返回x*y;//默认值
}
a=[[1],[2]];
b=[[3],[4]];
c=[[5,6],[7,8];
d=[[1,2],[3,4];
log(JSON.stringify(multiply(a,b));
log(JSON.stringify(multiply(a,5));
log(JSON.stringify(multiply(5,b));
log(JSON.stringify(multiply(c,d));
log(JSON.stringify(multiply(c,2));
log(JSON.stringify(multiply(a,c))//修剪c
log(JSON.stringify(multiply(c,a))//抛出错误
问题:
  • multiply
    接收两个参数。当
    multiply
    作为函数参数提供给
    Array.map
    时,第一个参数将是调用map的数组的元素,第二个参数将是元素的索引
解决方案:
  • 仅在第一个数组
    x
    上使用map,然后使用对应的第二个数组
    y
片段:
函数乘法(x,y){
如果(x.map){
返回x.map(函数(像素,i){
yEl=y.map?y[i]:y;//对应的y元素
返回乘法(xEl,yEl);
});
}
如果(y.map){//使用,当y是数组,x是数字时
返回乘法(y,x);
}
返回x*y;//默认值
}
a=[[1],[2]];
b=[[3],[4]];
c=[[5,6],[7,8];
d=[[1,2],[3,4];
log(JSON.stringify(multiply(a,b));
log(JSON.stringify(multiply(a,5));
log(JSON.stringify(multiply(5,b));
log(JSON.stringify(multiply(c,d));
log(JSON.stringify(multiply(c,2));
log(JSON.stringify(multiply(a,c))//修剪c
log(JSON.stringify(multiply(c,a))//抛出错误