关于javascript:检查数组中的元素

Check for element in array

本问题已经有最佳答案,请猛点这里访问。

我正在尝试检查数组中是否已经存在元素。我知道至少有两种不同的方法可以做到这一点:(1)和(2)。

我测试了这两种方法,但在这两种情况下都得到了no

1
2
3
4
5
6
7
8
9
10
11
12
13
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。我错过什么了吗?

另外,哪一个更快?

这是一把小提琴。


这两种方法几乎都是一样的:检查myArray是否有一个名为"Banana"的属性,而不是;它有0,1,2,3键,myArray[0]的值恰好是"banana"。

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

1
2
3
4
5
if( myArray.indexOf("Banana") >= 0 ) {
  console.log("yes")
} else {
  console.log("no")
}


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

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