1

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

当我将扫描 [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;
}

但我从来没有得到 ifsuccess to = true ......这可能很明显,但我之前从未在谷歌脚本(或 javascript :P)中做过编程,有人知道我做错了什么吗?

截屏

4

4 回答 4

1

看起来您正在比较两个 Array 对象而不是两个字符串。屏幕截图声称 name 和 employee 是具有单个元素的索引数组。

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

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

或者稍微安全一点:

name[0] === employee[0]    // equal value and of the same type
于 2013-03-23T18:06:36.210 回答
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])
于 2013-03-23T18:06:44.100 回答
0

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

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

但其他建议看起来更干净。

于 2013-03-23T18:10:36.807 回答
0

在您的调试器中,您可以看到两者nameemployee引用其中包含字符串的数组 - 但它们是两个不同的数组(具有不同的内部 id),因此在==.

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

var ifsuccess = name[0] == employee[0];
于 2013-03-23T18:11:13.680 回答