是否有一个函数/方法从JavaScript中的值中检索数组中项的索引?
换句话说,我正在寻找Python .index()列表方法的JavaScript等价物:
>>> ['stackoverflow','serverfault','meta','superuser'].index('meta')
2
轮已经存在或者我重新发明吗?
答案 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完成,你可以用它来代替。我不确定你的其余代码如何依赖于这个结构。否则,你几乎不得不自己动手。