使用“in”检查字符串是否出现在数组中

时间:2011-12-28 21:45:56

标签: javascript arrays

在Javascript中是否可以使用“in”运算符检查数组中是否出现字符串?

例如:

    var moveAnims   = new Array("fly", "wipe", "flip", "cube");

    alert("wipe" in moveAnims);
    alert("fly " in moveAnims);
    alert("fly" in moveAnims);
    alert("Cube" in moveAnims);

或者是迭代执行此操作的唯一方法吗?

var moveAnims   = new Array("fly", "wipe", "flip", "cube");
var targets     = new Array("wipe", "fly ", "fly", "Cube");

for (var i=0; i<moveAnims.length; i++)
{
    for (var j=0; j<targets.length; j++)
        if (targets[j] == moveAnims[i])
            alert("Found "+targets[j]);
}

3 个答案:

答案 0 :(得分:2)

您应该可以使用.indexOf()来获取对象的位置。检查它是否-1以确定它是否存在。

答案 1 :(得分:2)

不,因为in运算符检查对象的,该对象在数组中为0, 1, 2, ...

但您可以使用indexOf

if(~moveAnims.indexOf("fly")) { // ~ is a useful hack here (-1 if not found, and
    // ...                      // ~-1 === 0 and is the only falsy result of ~)
}

请注意,indexOf在旧版浏览器中不可用,但有一些垫片。

答案 2 :(得分:1)

尝试indexOf

moveAnims.indexOf('string')