【发布时间】:2022-12-18 00:19:09
【问题描述】:
我是 javascript 的新手。我玩得很开心。
我很困惑,如果我在 google 工作表中的自定义函数中传递一个数组,我会在一个数组中得到不同维度的数组。跨 5 列读取会得到一个包含 5 个元素的数组,其中一个数组包含 1 个元素。如果我向下读取 5 行,我会在一个数组中得到一个包含 5 个元素的数组。
传递的数组中所有内容的引用要么是:Array[0][2] 要么是 Array[2][0],具体取决于传递数组的方式。
我可以在脚本中处理这个问题,但是有相当多的代码行带有条件,并且对于每个传递的数组。我不敢相信这是必要的。常规函数(例如:sum(a1:a5 vs sum(a1:e1)) 对传递的数组无动于衷,我不敢相信它们都必须这样做。
我想有一种比我已经做过并且很想知道的更简单的方法来处理这个问题。 谢谢。
这就是我现在处理它的方式。values [] 是从自定义函数传递过来的。 (就像我说的,我是新手)
`var NuValues = []
if (values.length <=1 && values[0].length <=1){
return 'more than one value required'
} else if(values.length>1 && !Array.isArray(values[0])){
// already a 1d array and can be handled
NuValues = values.slice()
} else if (values.length ==1 && values[0].length >1){
//read across columns, read to a flat array
//read values across columns
NuValues = values[0].slice()
} else if (values.length>1 && values[0].length == 1){
//(read values down a column
for(i=0; i<=values.length-1;i++){
NuValues.push(values[i][0])
}
}
console.log(NuValues)
【问题讨论】:
标签: javascript arrays google-apps-script google-sheets