检查数组中的元素

时间:2016-04-14 19:03:17

标签: javascript arrays

我正在尝试检查数组中是否已存在元素。我知道至少有两种不同的方法:[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

2 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:0)

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

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