我编写了以下代码来实现自定义 Google 电子表格函数;目标是编写“names”参数中列出的球队之间所有可能的比赛:
function ALLGAMES( names )
{
var nbTeams = names.length;
var gameList = [];
for( var t1=0; t1<nbTeams-1; t1++ ) {
for( var t2=t1+1; t2<nbTeams; t2++ ) {
gameList.push( [ new String(names[t1]), new String(names[t2]) ] );
//A. gameList.push( [ t1, t2 ] );
}
}
// B. return JSON.stringify(gameList)
// C. return [[ 'a', 'b' ], ['c', 'd']]; //using the value returned by JSON.stringify
return gameList;
}
当我在电子表格中使用该函数时,它会用空白值填充单元格,而不是团队名称。
但是,在以下任何情况下,行为都会符合预期:
- 如果我使用 A. 行(推送数字而不是字符串),它会正确显示所有数字
- 如果我使用 B. 行(返回数组的 JSON 字符串),它会显示正确的 JSON 字符串
- 如果我使用 C. 行(完整返回数组),它会按预期工作。
问题出在哪里?
编辑 1:
最佳答案
ALLGAMES 函数将从您的选择中接收一个二维数组。您应该首先将其映射到一维数组。 在循环中,您应该省略 new String(..)。在 javascript 中,您几乎从不使用此表示法,请参阅 this discussion
function ALLGAMES( names )
{
names = names.map(function(item) { return item[0]; }); // adjusted
var nbTeams = names.length;
var gameList = [];
for( var t1=0; t1<nbTeams-1; t1++ ) {
for( var t2=t1+1; t2<nbTeams; t2++ ) {
gameList.push( [ names[t1], names[t2] ] ); // adjusted
}
}
return gameList;
}
关于javascript - 为什么这个自定义 Google 电子表格功能不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39350544/