var a = [1,2,3,4];
如果给出
b = 2
如何验证b是否在数组a?
答案 0 :(得分:3)
这是完全不可能的 数字是数字,无论它们来自何处;数字(或任何其他对象)与数组之间没有关联。
如果您要检查数组中是否包含2
,请致电indexOf
。
例如:
if (a.indexOf(2) < 0)
//Not Found! Waaah!
请注意,IE中不存在indexOf
您可以自己编写,如下所示:(由Mozilla提供)
if (!Array.prototype.indexOf)
{
Array.prototype.indexOf = function(searchElement /*, fromIndex */)
{
"use strict";
if (this === void 0 || this === null)
throw new TypeError();
var t = Object(this);
var len = t.length >>> 0;
if (len === 0)
return -1;
var n = 0;
if (arguments.length > 0)
{
n = Number(arguments[1]);
if (n !== n)
n = 0;
else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0))
n = (n > 0 || -1) * Math.floor(Math.abs(n));
}
if (n >= len)
return -1;
var k = n >= 0
? n
: Math.max(len - Math.abs(n), 0);
for (; k < len; k++)
{
if (k in t && t[k] === searchElement)
return k;
}
return -1;
};
}
答案 1 :(得分:0)
我认为你应该能做到:
var result = a[b];
if (typeof(result) !== "undefined") {
}
答案 2 :(得分:0)
var a = [1,2,3,4];
var b = 2;
if (~a.indexOf(b)) {
alert('Yup, it is in here!');
}
答案 3 :(得分:-1)
考虑到IE中未实现indexOf
,您可以循环浏览a
中的每个项目(推荐),或者如果您使用的是单行内容(目前这只是设计)对于整数):
new RegExp("\\b" + b + "\\b").test(a.join(",")); // Will return true or false