Google电子表格字符串比较

时间:2013-02-03 12:13:29

标签: javascript google-apps-script

我用过:

SpreadsheetApp.getActiveSheet().getRange(... some Range ...).getValues(); 

将电子表格单元格中的字符串存储到数组中。然后将字符串与其他字符串进行比较,但即使值相同,比较(使用==)也总是失败。

Browser.msgBox("is '"+topPlayerNames[j]+"' == '"+name+"'? "+(topPlayerNames[j] == name));

// displays:  

is 'Data' == 'Data'? false

为什么javascript比较失败?单元格值中隐藏的格式是否会破坏比较?

2 个答案:

答案 0 :(得分:1)

因为getRange()会给你一个二维数组,通过解释它们就像

var values = SpreadsheetApp.getActiveSheet().getRange(... some Range ...).getValues();
Browser.msgBox(values);

只是以您预期的方式输出数据,并且完全不匹配。不匹配的原因是您的变量容器保持

values = [['a','b',...],['d','f',....]]。因此,当您要求输出数据时,它将输出数据。但比较时,

Does [['a','b',...]] == 'a','b',... ?? The answer is it is not.

因此,您需要从阵列中获取数据以与其他人进行比较。在这种情况下,使用值[0] [0]得到'a'(在我的例子中)或得到'd',值[1] [0] ....等等。您知道元素编号在javascript数组中以0开头。 :)

现在你可以比较它们了。所以值[0] [0] =='a'将输出TRUE(在我的例子中)

但是你没有提到什么是topPlayerNames [j],如果它也像上面的值,那么你也需要以解释的方式考虑它。

(你的问题变量有限。所以在解释时我需要写更多。下次请用相应的变量给出一些解释的问题。使用短变量进行长语句。这将有助于以简单的方式回答。)< / p>

答案 1 :(得分:0)

请参阅What is the correct way to check for string equality in JavaScript?

我会用     topPlayerNames [j] .equals(name)

我从不信任==使用字符串,因为它经常导致错误。

相关问题