JavaScript 判断值是否在数组中的方法:in 与 indexOf

作者:函数茶馆

时间:2026-10-22

浏览:127

本文介绍在 JavaScript 中判断值是否存在于数组的两种常见方式。首先解析 in 操作符仅能检测数组下标而非值的特性,随后重点介绍使用 indexOf 方法判断元素是否存在的具体用法及浏览器兼容性说明。

文章目录

JavaScript 判断值是否在数组中的方法:in 与 indexOf

本文主要介绍如何在 JavaScript 中判断某个值是否存在于数组中,供读者参考学习。

问题描述


> var b = ["aa", "bb"]
> "aa" in b

问题描述

需要判断字符串 'aa' 是否存在于数组中,使用 in 操作符是否可行?

in 操作符

in 操作符

首先说明 in 操作符的用法。

Python 用户可能会疑惑是否可以直接使用 in,但在 JavaScript 中并不支持这种用法。先看看 Python 中的效果:


>>> a = ["aa" , "bb"]
>>> "aa" in a
True
>>>

JavaScript 的行为不同,in 操作符的操作对象必须是一个对象。MDN 官网对此有明确说明:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in

简而言之:

1. 在数组中搜索的是下标。

2. 在对象中可以使用 key in obj 这种形式,例如:


// Arraysvar trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];
0 in trees // returns true
3 in trees // returns true
6 in trees // returns false
'bay' in trees // returns false (you must specify the 
   // index number, not the value at that index)
'length' in trees // returns true (length is an Array property)
Symbol.iterator in trees // returns true (arrays are iterable, works only in ES2015+)

// Predefined objects'PI' in Math  // returns true

// Custom objectsvar mycar = {make: 'Honda', model: 'Accord', year: 1998};
'make' in mycar // returns true
'model' in mycar // returns true

indexOf 方法

indexOf 方法

这是一个非常实用的方法,可以直接使用。如果是前端开发,需确保浏览器支持;Node.js 环境则完全支持。

示例:


> var b = ["aa", "bb"]
undefined
> "aa" in b
false
> b.indexOf("aa")
0
> b.indexOf("aaa")

最简单直接的办法

就是做一个 for 循环,一个个比较吧。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对本站的支持

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章