Google 表格自定义函数的多个数组输入,可将一个数组除以另一个数组
Multiple array inputs for Google Sheets custom function that divides one array by another
在
Google表格中构建运行日志,并且需要编写一个函数,该函数在与距离(英里)和持续时间(分钟)条目的两列相邻的单独列中返回配速(每英里分钟)。
持续时间数据存储在 B 列中。
距离数据存储在 C 列中。
配速数据返回到 D 列。
我可以成功地将数组返回到 D 列,该数组使 B 列中每一行的持续时间值加倍:
function calculatePace(distance, duration){
if(distance.map){
return distance.map(calculatePace);
}
else{
var pace = duration*2;
return pace;
}
}
我真正需要的是将持续时间数组除以距离数组,这样
else{
var pace = duration/distance;
return pace;
}
但是我不知道如何递归 calculatePace
函数,以便每次调用都传递 distance.map 和duration.map 中的每一行。
为了进一步澄清,=calculatePace(B1:B10, C1:C10)
将存储在单元格 D1 中。
你想要一个谷歌表格函数,将一个数组除以另一个数组。内置arrayformula
已经这样做了:
=arrayformula(B1:B10/C1:C10)
但是,如果需要自定义函数(也许它是更大计算的一部分),它将如下所示:
function calculatePace(distance, duration){
if (distance.map && duration.map && distance.length == duration.length) {
return distance.map(function(a, i) {
return a[0]/duration[i][0];
});
}
else if (!distance.map && !duration.map) {
return distance/duration;
}
else {
throw new Error('The arguments must have the same number of rows');
}
}
本质部分是数组的划分,
distance.map(function(a, i) {
return a[0]/duration[i][0];
});
这里a
是第一个范围的一行,因此a[0]
访问其第一个元素。持续时间数组的匹配元素是 duration[i][0]
。由于假定范围为列,因此仅考虑第一列。
if 语句检查输入是相同长度的数组还是标量;否则将引发错误。
相关文章:
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 根据id将json数组组合为一个json数组
- JavaScript数组包含一个值
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- jQuery$.inArray()总是返回-1和一个对象数组
- 在数组中的一个元素上设置多个值
- javascript处理一个对象数组以获得一个新的对象数组
- 作为一个二维数组,从ajax接收
- 你能用来自数组的属性名称生成一个对象吗
- 多维关联数组的最后一个索引
- 如何创建一个方法来验证数组的范围
- 循环以检查数组中的最后一个图像
- 在Javascript中将一个值和字符串数组转换为if语句
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 如何将一个对象添加到每个对象数组中
- 如何创建一个谷歌地图地理坐标数组
- 如何从另一个带下划线的数组中筛选带元素的数组
- 使用window.location.htm和匹配的URL数组(一个用于桌面,一个用于移动)将桌面网站重定向到移动
- Javascript排序多维数组-一个完整的例子
- 刽子手的游戏.2数组.一个需要相应地更新另一个