Javascript:如果a是数组中的值,如何编写

时间:2010-12-17 03:24:24

标签: javascript

var a = [1,2,3,4];

如果给出

  

b = 2

如何验证b是否在数组a?

4 个答案:

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