【问题标题】:Custom array function for MIN() in Google SheetsGoogle表格中MIN()的自定义数组函数
【发布时间】:2020-05-12 06:18:10
【问题描述】:

由于 Sheets 中的 MIN() 函数仅返回单个值,并且无法使其与 ARRAYFORMULA 一起使用,因此我想创建一个自定义函数,该函数将采用两个数组并比较每个条目的值,然后返回最小值数组。 (我知道有一种使用 QUERY 的解决方法,但它不适用于我的目的)

我现在所拥有的将采用两个阵列并排成一排,并且可以完美运行。不幸的是,当引入多行时,它会中断。我不知道为什么,所以我不知道如何前进。如何使它适用于任何大小的数组?

当我给它任何二维范围时,它会抛出一个错误:

“TypeError:无法设置未定义的属性'0'”

在这条线上finalarray[x][y] = Math.min(arr1[x][y], arr2[x][y]);

当前“工作”代码:

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

【问题讨论】:

    标签: javascript google-apps-script google-sheets custom-function


    【解决方案1】:

    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])]
    

    【讨论】:

    • 哦!我什至没有意识到数组的每个元素都可以是独立的,并且与第一个元素的大小不同。
    猜你喜欢
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多