检查javascript数组中的字符串元素

时间:2012-03-21 20:55:40

标签: javascript arrays

这有什么问题?

var colours = ['red','green', 'blue']
console.log('blue' in colours);  // outputs false

输出错误,我原以为应该试试。

由于

3 个答案:

答案 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);