2013-02-03 33 views
0

我用:谷歌电子表格字符串比较

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

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

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

// displays: 

is 'Data' == 'Data'? false 

为什么javascript比较失败?是否隐藏格式化单元格值中断比较?

回答

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开头。 :)

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

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

(你的问题变量有限,所以我在解释的时候需要写更多的信息,下一次请给出一些解释的问题和相应的变量,使用短变量作为长语句,这将有助于以简单的方式回答。

相关问题