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

Tho*_*sen 3 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
}
Run Code Online (Sandbox Code Playgroud)

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

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

提前致谢.

Emi*_*nov 8

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

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

刚做:

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
}
Run Code Online (Sandbox Code Playgroud)

这对我来说更具可读性.


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

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

然后呼叫将是

if (arr.has(8)) // ...
Run Code Online (Sandbox Code Playgroud)

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


PS尽量不要使用Array变量名,因为它是为实际的数组类型保留的.

  • 我可以说 - 不要修改buidl-in对象原型吗?只有你必须...关于你的问题 - 这里有一个好的和轻的(!)库叫做underscore.js.50个有用的方法来处理数组等.试试吧.你觉得和它合作很好学习;)http://documentcloud.github.com/underscore/ (2认同)
  • 不修改内置对象会失败JavaScript的一半目的.它可以负责任地完成. (2认同)