Google 表格中 MIN() 的自定义数组函数
Custom array function for MIN() in Google Sheets
由于 Sheets 中的 MIN() 函数只有 return 一个值,并且无法使其与 ARRAYFORMULA 一起使用,我想制作一个自定义函数,该函数将接受两个数组并比较值在每个条目中,return 一个最小值数组。 (我知道有一个使用 QUERY 的解决方法,但它对我的目的不起作用)
我现在拥有的是一行两个数组,并且可以完美地工作。不幸的是,当引入多行时它会中断。我不确定为什么,所以我迷失了如何前进。如何让它适用于任何大小的数组?
当我给它输入任何二维范围时,它会抛出一个错误:
"TypeError: Cannot set property '0' of undefined"
这条线finalarray[x][y] = Math.min(arr1[x][y], arr2[x][y]);
当前“"working"”代码:
function MINARRAY(arr1, arr2) {
if (arr1.length == arr2.length && arr1[0].length == arr2[0].length)
{
var finalarray = [[]];
for (x = 0; x < arr1.length; x++)
{
for(y = 0; y < arr1[x].length; y++)
{
finalarray[x][y] = Math.min(arr1[x][y], arr2[x][y]);
}
}
return finalarray;
}
else
{
throw new Error("These arrays are different sizes");
}
}
finalarray
是一个二维数组。 [[]]
仅将 finalarray
的第一个元素设置为数组。需要将finalarray
的所有元素设置为一个数组。在循环内,添加
finalarray[x]=[]//set `x`th element as a array or finalarray[x]= finalarray[x] || []
finalarray[x][y] = Math.min(arr1[x][y], arr2[x][y]);
或者,
finalarray[x] = [Math.min(arr1[x][y], arr2[x][y])]
由于 Sheets 中的 MIN() 函数只有 return 一个值,并且无法使其与 ARRAYFORMULA 一起使用,我想制作一个自定义函数,该函数将接受两个数组并比较值在每个条目中,return 一个最小值数组。 (我知道有一个使用 QUERY 的解决方法,但它对我的目的不起作用)
我现在拥有的是一行两个数组,并且可以完美地工作。不幸的是,当引入多行时它会中断。我不确定为什么,所以我迷失了如何前进。如何让它适用于任何大小的数组?
当我给它输入任何二维范围时,它会抛出一个错误:
"TypeError: Cannot set property '0' of undefined"
这条线finalarray[x][y] = Math.min(arr1[x][y], arr2[x][y]);
当前“"working"”代码:
function MINARRAY(arr1, arr2) {
if (arr1.length == arr2.length && arr1[0].length == arr2[0].length)
{
var finalarray = [[]];
for (x = 0; x < arr1.length; x++)
{
for(y = 0; y < arr1[x].length; y++)
{
finalarray[x][y] = Math.min(arr1[x][y], arr2[x][y]);
}
}
return finalarray;
}
else
{
throw new Error("These arrays are different sizes");
}
}
finalarray
是一个二维数组。 [[]]
仅将 finalarray
的第一个元素设置为数组。需要将finalarray
的所有元素设置为一个数组。在循环内,添加
finalarray[x]=[]//set `x`th element as a array or finalarray[x]= finalarray[x] || []
finalarray[x][y] = Math.min(arr1[x][y], arr2[x][y]);
或者,
finalarray[x] = [Math.min(arr1[x][y], arr2[x][y])]