You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何JavaScript中1 in [1,2]为true但1 in [1]为false?

为什么1 in [1, 2]返回true,但1 in [1]返回false?

哈哈,这个问题真的很容易让人混淆,我刚学JavaScript的时候也被这个in操作符坑过!其实核心原因是你误解了in操作符的作用——它不是用来检查数组中是否包含某个值的,而是用来检查一个对象(数组本质上也是对象)是否拥有指定的属性名/索引。

咱们拆解来看两个例子:

  • 对于[1, 2]这个数组,它的索引是0和1(数组索引从0开始计数)。当你执行1 in [1, 2]时,实际上是在问:“这个数组有没有索引为1的属性?”答案是肯定的,因为数组的第二个元素确实存在,所以返回true。
  • 而[1]这个数组,只有索引0对应的元素,索引1根本不存在。所以1 in [1]就是在问“有没有索引1的属性?”自然返回false。

如果你的需求是检查数组中是否包含某个值,那应该用数组的includes()方法,比如:

[1].includes(1) // 返回true
[1,2].includes(1) // 也返回true

或者老一点的indexOf()方法(只要返回值不等于-1就说明存在):

[1].indexOf(1) !== -1 // true

内容的提问来源于stack exchange,提问作者dsfx3d

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 23:42:54