【问题标题】:Check for element in array [duplicate]检查数组中的元素[重复]
【发布时间】:2016-08-06 12:30:03
【问题描述】:

我正在尝试检查一个元素是否已存在于数组中。我知道至少有两种不同的方法:[1][2]

我测试了他们两个,但在这两种情况下都得到no

var myArray = ["Banana", "Orange", "Apple", "Mango"];

if ("Banana" in myArray) {
  console.log("yes")
} else {
  console.log("no") // <--
}

if (typeof myArray["Banana"] === 'undefined') {
  console.log("no") // <--
} else {
  console.log("yes")
}

在这两种情况下,我都会得到no。我错过了什么吗?

还有,哪个更快?

Here is a fiddle.

【问题讨论】:

    标签: javascript arrays


    【解决方案1】:

    在这两种情况下,您都在寻找数组的 香蕉 (+1) 元素,这是不正确的。

    无论哪种方式,都不应使用第一个(即使它用于此目的),因为它不打算与数组一起使用,因为它会查找属性。

    【讨论】:

      【解决方案2】:

      两者都在做几乎相同的事情:检查myArray 是否有一个名为"Banana" 的属性,但它没有;它有键0,1,2,3,而myArray[0] 的值恰好是“Banana”。

      如果要检查字符串是否在数组中,可以使用Array.prototype.indexOf:

      if( myArray.indexOf("Banana") >= 0 ) {
        console.log("yes")
      } else {
        console.log("no")
      }
      

      【讨论】:

      • 为什么不关闭重复的问题?
      • 数组有元素。属性是可能的,但'banana'不是属性,只是一个元素。
      • @ZachSaucier 副本描述了如何检查,但没有说明 OPs 方法不起作用的原因。
      • 问题完全一样
      • @NinaScholz 我想你和我在回答中所说的一样吗?检查名为“Banana”的属性失败,因为该数组没有名为“Banana”的属性,只有一个元素。
      猜你喜欢
      • 2018-09-17
      • 1970-01-01
      • 2015-03-26
      • 2018-04-06
      • 2017-03-17
      • 2011-11-14
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多