如何确定集合是否包含js中的元素

时间:2014-04-11 02:42:57

标签: javascript

显然0 in [3,1]不是确定集合是否包含项目的正确方法。有没有JS兼容的方法可以在不迭代集合的情况下执行此操作?

1 个答案:

答案 0 :(得分:2)

  

您认为0 in [3,1]会评估为false。但它评估为真。我认为这是因为null,false和零有时被视为等价。

不,你对what in does有误解。它测试对象是否具有名称属性Arrays只是具有数字属性的对象:

> console.dir([3,1]);
  Array[2]
    0: 3
    1: 1
    length: 2

数组的索引为0,因此测试为true'length' in [3,1]也会返回true

  

null,false和zero有时被视为等效

nullfalse0都是“假”值,即转换为布尔值时变为false。这与其他动态类型语言(如PHP或Python)一致。

JavaScript可能会出现令人惊讶的行为,特别是在类型转换方面,但它具有确定性。如果可能,建议简单地避免类型转换。