【问题标题】:How do I get the index of an item in an array?如何获取数组中项目的索引?
【发布时间】:2011-01-28 07:36:38
【问题描述】:
var fruits = [ 'apple', 'banana', 'orange' ];

如何找到值“香蕉”的索引是什么? (当然是“1”)。

谢谢

【问题讨论】:

  • 糟糕,我将您的帖子标题误读为“如何获取数组中的项目数”。很好,你现在说得更清楚了。

标签: javascript arrays indexing


【解决方案1】:

如图所示:https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/Array/IndexOf

if (!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt /*, from*/)
  {
    var len = this.length >>> 0;

    var from = Number(arguments[1]) || 0;
    from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
    if (from < 0)
      from += len;

    for (; from < len; from++)
    {
      if (from in this &&
          this[from] === elt)
        return from;
    }
    return -1;
  };
}

用法:

var fruits = [ 'apple', 'banana', 'orange' ];
var index = fruits.indexOf('banana');

将返回“1”

【讨论】:

  • >>> 对我来说是新的。它有什么作用?谷歌对它毫无用处!
  • 这应该包含在脚本的顶部,并且基本上扩展了 JavaScript 以包含该方法。我正在使用用法更新我的答案。
  • @spender,即 无符号右移 位运算符,在这种情况下,他们使用它只是为了确保 length 值是 32 位无符号整数(所有位运算符在内部都使用 32 位整数)...
【解决方案2】:

没有内置属性可以返回特定项目的索引。如果你需要一个函数,那么你可以使用 durilai 定义的原型函数。但是如果你只需要找到索引,你可以使用这个简单的代码块来返回值:

for (var i=0; i<fruits.length; i++)
{
  if (fruits[i] == "banana")
  {
    alert(i);
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多