我有一个数组如下:
var arr = [10, 12, 34, 23, 12, 89, 34, 12];
我在这个序列中出现了三次数字12
,我想在JavaScript中找到第二个12
的索引。我尝试使用lastIndexOf()
方法,但没有得到想要的结果。有没有其他方法可以找到它呢?
我有一个数组如下:
var arr = [10, 12, 34, 23, 12, 89, 34, 12];
我在这个序列中出现了三次数字12
,我想在JavaScript中找到第二个12
的索引。我尝试使用lastIndexOf()
方法,但没有得到想要的结果。有没有其他方法可以找到它呢?
array.indexOf(searchElement[, fromIndex])
arr.indexOf(12, arr.indexOf(12) + 1);
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf
还有一种可能的解决方案:
Array.prototype.nthIndexOf = function(e, n) {
var index = -1;
for (var i = 0, len = this.length; i < len; i++) {
if (i in this && e === this[i] && !--n) {
index = i;
break;
}
}
return index;
};
[10, 12, 34, 23, 12, 89, 34, 12].nthIndexOf(12, 2);
// >> 4
if
中加入 (i in this)
的测试,以使其更符合规范,尽管这很少会有影响。 - user1106925n
...为什么?也许你想用 !!
吗?...哦,我明白了。我的思维还停留在 for
而不是 if
上。没关系。 - user1106925--n === 0
。我使用 n
作为一种计数器。 - VisioNi in this
的观点。现在它至少看起来更好了 :)
。 - VisioNvar first = false;
var index = 0;
for(var i = 0; i<arr.length;i++)
{
if(arr[i] == 12)
{
if(first==true)
{
index = i;
}
first = true;
}
}
oO
有人试过吗?i
没有初始化,index
在全局范围内定义...哇... - VisioN
indexOf
方法可能无法正常工作,您需要使用一个 shim。 - VisioN