列表中的javascript字符串返回false

时间:2013-04-09 20:58:38

标签: javascript

我的网站刚刚开始返回false以进行以下javascript检查。我想了解原因。

_test = ["0e52a313167fecc07c9507fcf7257f79"]
"0e52a313167fecc07c9507fcf7257f79" in _test
>>> false
_test[0] === "0e52a313167fecc07c9507fcf7257f79"
>>> true 

有人可以帮助我理解为什么吗?

3 个答案:

答案 0 :(得分:3)

in运算符测试属性是否在对象中。例如

var test = {
    a: 1,
    b: 2 
};

"a" in test == true;
"c" in test == false;

您想测试数组是否包含特定对象。您应该使用Array#indexOf方法。

test.indexOf("0e52...") != -1 // -1 means "not found", anything else simply indicates the index of the object in the array.

MDN上的数组#indexOf:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf

答案 1 :(得分:1)

来自the MDN

  

如果指定的属性在,则in运算符返回true   指定的对象。

检查密钥,而不是值。

在那里,属性键为0,而不是"0e52a313167fecc07c9507fcf7257f79"

您可以测试0 in _testtrue

如果要检查数值是否在数组中,请使用indexOf

_test.indexOf("0e52a313167fecc07c9507fcf7257f79")!==-1

(IE8需要一个由MDN提供的垫片)

答案 2 :(得分:0)

“in”运算符搜索对象键,而不是值。您将不得不使用indexOf并在以前的IE版本中处理它的非实现。因此,您可以在第一个google结果上找到Array.prototype.indexOf方法的跨浏览器实现。