Javascript检查数组是否存在特定号码

时间:2009-11-25 09:40:02

标签: javascript arrays element contains

我在这里搜索了很多问题,但没有找到一个我认为适合我的账单,所以如果你知道一个,请链接到它。

我有一个数组,我想搜索一个特定的数字,如果该数字在数组中,我想采取行动,如果没有,那么另一个行动。

我有类似的东西

var Array = ["1","8","17","14","11","20","2","6"];

for(x=0;x<=Array.length;x++)
{
    if(Array[x]==8)
        then change picture.src to srcpicture1
    else
        then change picture.src to srcpicture2
}

但这会运行数组的长度并最终检查数组的最后一个元素,因为最后一个元素不是8,所以它会将图片更改为picture2。

现在我可以看到为什么会发生这种情况,我对如何检查数组是否包含特定数字没有任何想法。

提前致谢。

5 个答案:

答案 0 :(得分:8)

你能做的就是给自己写一个函数来检查一个元素是否属于一个数组:

function inArray(array, value) {
    for (var i = 0; i < array.length; i++) {
        if (array[i] == value) return true;
    }
    return false;
}

刚才:

var arr = ["1","8","17","14","11","20","2","6"];
if (inArray(arr, 8)) {
    // change picture.src to srcpicture1
} else {
    // change picture.src to srcpicture2
}

这对我来说更具可读性。


对于额外的点,您可以将函数添加到数组原型中,如下所示:

Array.prototype.has = function (value) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] === value) return true;
    }
    return false;
};

然后呼叫将是

if (arr.has(8)) // ...

进一步推动这一点,你可以检查数组上的indexOf()方法并使用它 - 如果没有 - 用上面的代码替换它。


P.S。尽量不要将Array用于变量名,因为它是为实际的数组类型保留的。

答案 1 :(得分:6)

答案 2 :(得分:3)

为什么不在您找到正确的号码时中止循环:

for(x=0;x<=Array.length;x++)
{
    if(Array[x]==8) {
        //change picture.src to srcpicture1
        break;
    }
}

答案 3 :(得分:0)

您可以先对数组进行排序,然后只检查数组,直到数组在数组中的位置,是否存在。

答案 4 :(得分:0)

如果你有独特的键并且更快的检索是你非常关心的,你可以考虑使用一个地图而不是一个数组(如果有一个使用数组的硬边案例,那么它将不起作用课程)。如果使用地图,只需选中“if(num in arr)”。