这有什么问题?
var colours = ['red','green', 'blue']
console.log('blue' in colours); // outputs false
输出错误,我原以为应该试试。
由于
答案 0 :(得分:6)
由于您正在处理Array
,因此您无法以这种方式进行检查。 Arrays
为您提供了Array.prototype.indexOf
方法来确定某些内容是否在其中:
console.log( colours.indexOf( 'blue' ) > -1 );
说明:
ECMAscript中的数组只是专门的Objects
。这意味着您的阵列看起来真的像
colours = {
0: 'red',
1: 'green',
2: 'blue'
};
由于in
运算符仅检查对象keys
,因此无法使用它检查值。你确实可以检查if('1' in colours)
例如(它将返回true
),但这没有多大意义。同样,对阵列使用.indexOf()
。
附注:ECMAscript Harmony(ES.Next或ES6)将给出for of
循环而不是键,枚举对象值。我不太确定我们是否可以像of
那样使用in
运算符,但它会非常有用。
答案 1 :(得分:1)
使用colours.indexOf('blue')
。
答案 2 :(得分:1)
这只适用于对象。它检查对象是否具有属性。
var colours = { red: 123, green: true, blue: "foo"};;
console.log("blue" in colours);
在现代浏览器中使用indexOf
:
var colours = ['red','green', 'blue'];
console.log(colours.indexOf("blue") != -1);