为什么 1 in [1] 为false ,我该怎么写chrome console测试如下
1 in [1]
false1 in [1,2]
true1 in Array(1)
false1 in Array(1,2,3)
trueArray(1)
[empty]Array(1,2)
(2) [1, 2]

解决方案 »

  1.   

    in是一个二元运算符,只有第1个操作数的值是第2个操作数的属性名,才会返回true,否则返回false。
      

  2.   

    要判断数组中是否包含某个值应该是
    [1].indexOf(1)>=0
      

  3.   

    数组查找元素可用
    Array.indexOf
    Array.find
    Array.findIndex
    Array.includes
      

  4.   

    兄弟,你对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。
    希望可以帮到你