我正在尝试制作一个程序,用谷歌表中的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)有没有人知道我做错了什么?
答案 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)
在您的调试器中,您可以看到name
和employee
都引用了包含字符串的数组 - 但这些是两个不同的数组(具有不同的内部ID),因此它们不相等==
的条款。
如果要比较其中的字符串,请使用
var ifsuccess = name[0] == employee[0];