为什么 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]
false1 in [1,2]
true1 in Array(1)
false1 in Array(1,2,3)
trueArray(1)
[empty]Array(1,2)
(2) [1, 2]
[1].indexOf(1)>=0
Array.indexOf
Array.find
Array.findIndex
Array.includes
上面你所说的 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。
希望可以帮到你