0

我用过:

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

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

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

// displays:  

is 'Data' == 'Data'? false

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

4

2 回答 2

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.

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

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

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

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

于 2013-02-13T09:52:18.727 回答
0

请参阅在 JavaScript 中检查字符串相等性的正确方法是什么?

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

我从不相信 == 带有字符串,因为它经常会导致错误。

于 2013-02-06T01:44:53.843 回答