如何在JavaScript中检查列表是否包含字符串?

25

如何使用JavaScript测试不带引号的字符串“Orange”是否存在于下面这样的列表中?

var suggestionList = ["Apple", "Orange", "Kiwi"];

什么是“不带引号”的意思? - pritesh
http://www.w3schools.com/jsref/jsref_indexof_array.asp - scoots
1个回答

37

indexOf() 是在这种情况下使用的默认选项。

if( suggestionList.indexOf("Orange") > -1 ) {
    console.log("success");
}

.indexOf() 返回在数组(或字符串)中找到的元素位置。当没有找到元素时,它会返回-1

需要考虑的事项:

  • 如果第一个对象匹配,它将返回0,因此您不能只强制转换为布尔值。
  • 自es2016以来,您可以使用suggestionList.includes('Kiwi');,它会直接返回布尔值。(不适用于Internet Explorer,但适用于IEdge)
  • 旧版浏览器的includes polyfill: https://babeljs.io/docs/usage/polyfill/

“indexOf()”似乎是答案,谢谢。但它的命名似乎与“查找内部”不符合常理,您知道为什么称为indexOf吗? - Gallaxhar
啊,正如我刚刚编辑的那样,它的特定用途是查找元素在数组中的确切位置(索引),因此相反地,我认为这个命名非常合适。例如:你的数组中 orange索引是1。 - ippi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接