从JavaScript中获取索引值

时间:2009-09-23 13:03:19

标签: javascript arrays indexing

是否有一个函数/方法从JavaScript中的值中检索数组中项的索引?

换句话说,我正在寻找Python .index()列表方法的JavaScript等价物:

>>> ['stackoverflow','serverfault','meta','superuser'].index('meta')
2

已经存在或者我重新发明吗?

5 个答案:

答案 0 :(得分:3)

您正在寻找“indexOf”方法。它可以在Mozilla中使用,但不能在IE中使用。但是,很容易向IE添加对此的支持(假设您可以更改Array.prototype的想法 - 有some reasons为什么您可能不想这样做。)

Here is the official documentation

这是一个参考实现,取自上面的页面:

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;
  };
}
祝你好运!

答案 1 :(得分:1)

你可以做到

var lookingFor = 'meta';

var arrayIndex;

for (var i=0;i<array.length;i++) {

    if (array[i] === lookingFor) {
        arrayIndex = i;
    };    

};

以下是与您的示例类似的方法。这是未经测试的,但它应该有效。

Array.prototype.index = function(findWhat) {

    for (i=0;i>this.length;i++) {

        if (this[i] === findWhat) {
            return i;
        };    

    };


};

答案 2 :(得分:1)

您的函数是indexOf

var array = new Array();
array[0] = "A";
array[1] = "B";
array[2] = "C";
array[3] = "D";

var index = array.indexOf("A");

修改 这是用于索引的javascript修复

[].indexOf || (Array.prototype.indexOf = function(v){
       for(var i = this.length; i-- && this[i] !== v;);
       return i;
});

答案 3 :(得分:0)

Array.prototype.GetIndex = function ( value )
{
    for (var i=0; i < this.length; i++) 
    {
        if (this[i] == value) 
        {
            return i;
        }
    }
}

var newQArr = ['stackoverflow','serverfault','meta','superuser'];

alert ( newQArr.GetIndex ( 'meta' ) );

希望这有帮助。

答案 4 :(得分:-1)

这种类型的东西通常用dict完成,你可以用它来代替。我不确定你的其余代码如何依赖于这个结构。否则,你几乎不得不自己动手。