这怎么了
var colours = ['red','green', 'blue']
console.log('blue' in colours); // outputs false
输出错误,我以为应该是trye。
谢谢
最佳答案
由于您正在处理Array
,因此无法以这种方式进行检查。 Arrays
为您提供Array.prototype.indexOf
方法以确定其中是否存在某些东西:
console.log( colours.indexOf( 'blue' ) > -1 );
说明:
ECMAscript中的数组只是专门的
Objects
。这意味着您的Array确实看起来像colours = {
0: 'red',
1: 'green',
2: 'blue'
};
由于
in
运算符仅检查对象keys
,因此无法使用它检查值。您确实可以检查例如if('1' in colours)
(将返回true
),但这没有多大意义。同样,对数组使用.indexOf()
。旁注:ECMAscript Harmony(ES.Next或ES6)将给出
for of
循环,该循环代替键枚举对象值。我不确定是否可以与of
一样使用in
运算符,但这将非常有用。