即使变量匹配,语句也会失败

时间:2013-03-23 17:58:54

标签: javascript google-apps-script

我正在尝试制作一个程序,用谷歌表中的RFID扫描仪组织打卡......

当我将scan [i]与员工姓名[j]匹配时,它永远不会成功。

我有一个简单的if语句:

//names[i] is the name of the card for the scan event (card names = employee full name)
var name = names[i];

//the j for loop will check all employee names in the list for a match
var employee = employees[j];
if (name==employee) {
  var ifsuccess = true;
}

但是我从来没有得到if = = true ......这可能是显而易见的但我从来没有在google脚本中编程(或javascript:P)有没有人知道我做错了什么?

screenshot

4 个答案:

答案 0 :(得分:1)

看起来你正在比较两个Array对象而不是两个字符串。屏幕截图声称名称和员工是带有单个元素的索引数组。

比较每个Array对象中的字符串数据:

name[0] == employee[0]     // equal value

或稍微安全一点:

name[0] === employee[0]    // equal value and of the same type

答案 1 :(得分:0)

> foo = ['foo'];
[ 'foo' ]
> bar = ['foo'];
[ 'foo' ]
> foo == bar
false
> foo === bar
false

将数组与数组进行比较 - 即使它们看起来相同,除非它们真正引用内存中的相同数组,否则不会成立。

> bar = foo;
[ 'foo' ]
> foo == bar
true
> foo === bar
true

因此,请尝试比较字符串:

if (bar[0] === foo[0])

答案 2 :(得分:0)

使用toString方法也可能有所帮助:

name.toString()==employee.toString()

但其他建议看起来更清晰。

答案 3 :(得分:0)

在您的调试器中,您可以看到nameemployee都引用了包含字符串的数组 - 但这些是两个不同的数组(具有不同的内部ID),因此它们不相等==的条款。

如果要比较其中的字符串,请使用

var ifsuccess = name[0] == employee[0];