在不使用循环的情况下查找数字数组的项目

Tom*_*Tom 2 javascript arrays numbers

这是一个愚蠢的问题,感觉就像一个.但心理障碍现在很糟糕.:(

我的问题是我有一个只包含数字的数组.我想使用该数组作为查找,但是我传递给数组查找数字的数字一直在查找该数字索引中的数组,而不是数组中是否存在该数字.

例如:

var a = [2,4,6,8,10],
b = 2;

if(a[b]){ /* if the number 2 exists in the array a, then do something * }
Run Code Online (Sandbox Code Playgroud)

但是,它会查看位置2(6)中的数组值,而不是值2是否在数组中.这是完全合理的,但是(心理障碍)我无法想出一种方法来测试一个数字是否存在于数字数组中...我甚至制作了所有字符串,但它确实类型强制并且问题仍然存在.

把头发拉出来.请帮忙,谢谢.:d

SLa*_*aks 7

if (a.indexOf(2) >= 0)
Run Code Online (Sandbox Code Playgroud)

请注意,IE <9没有indexOf,因此您需要添加它以防它不存在:

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) // shortcut for verifying if it's NaN
        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;
  };
}
Run Code Online (Sandbox Code Playgroud)

  • @Tom"众所周知,对象查找更加昂贵"是一个声明*正在哭泣*以备份它.说真的,这是胡说八道. (3认同)