为什么 1 in [1] 为false ,我该怎么写

qq_38332945 2018-12-29 10:12:05
为什么 1 in [1] 为false ,我该怎么写

chrome console测试如下
1 in [1]
false

1 in [1,2]
true

1 in Array(1)
false

1 in Array(1,2,3)
true

Array(1)
[empty]

Array(1,2)
(2) [1, 2]
...全文
428 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
terrorbladed 2018-12-30
  • 打赏
  • 举报
回复
兄弟,你对in操作符的理解可能有误,in操作符是获取莫个对象时候含有某个属性值,如果有返回true,没有返回false 上面你所说的 1 in [1] 可以理解为: var arr = [1]; 1 in arr; 也就是arr 是否具有1 这个属性,一个数组实际也是一个对象,只是这对象实现了一个可迭代的接口所以可以进行遍历。 如果打印arr 会发现arr 有两个属性如下: 0:1 //索引为0的属性,也就是数组第一个值 length:1 //数组长度 可见arr中并没有包含属值1,所以1 in arr 返回为false ,你可以试一下 'length' in arr 会发现返回为true,因为arr中有length这个属性。 1 in [1, 2] 返回true,可以理解为: var arr2 = [1, 2]; 1 in arr2; 如果打印arr2,如下: 0: 1 1: 2 length: 2 可以发现 arr中有属性值1, 所以1 in arr2 返回true。 希望可以帮到你
田少川 2018-12-29
  • 打赏
  • 举报
回复 1
in是一个二元运算符,只有第1个操作数的值是第2个操作数的属性名,才会返回true,否则返回false。
scscms太阳光 2018-12-29
  • 打赏
  • 举报
回复
数组查找元素可用
Array.indexOf
Array.find
Array.findIndex
Array.includes
天际的海浪 2018-12-29
  • 打赏
  • 举报
回复
要判断数组中是否包含某个值应该是 [1].indexOf(1)>=0
天际的海浪 2018-12-29
  • 打赏
  • 举报
回复
in 左边的是属性名(也就是数组元素的下标),不是属性值。 [1]数组中只有一个下标为0的元素,没有下标为1的元素

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧