【发布时间】:2013-05-21 12:44:03
【问题描述】:
我有一个数组如下:
var arr = [10, 12, 34, 23, 12, 89, 34, 12];
在这我已经12 三次。我想在 JavaScript 中找到12 的第二个索引。我尝试使用lastIndexOf(),但对我没有帮助。有没有办法找到这个?
【问题讨论】:
标签: javascript arrays indexof
我有一个数组如下:
var arr = [10, 12, 34, 23, 12, 89, 34, 12];
在这我已经12 三次。我想在 JavaScript 中找到12 的第二个索引。我尝试使用lastIndexOf(),但对我没有帮助。有没有办法找到这个?
【问题讨论】:
标签: javascript arrays indexof
array.indexOf(searchElement[, fromIndex])
arr.indexOf(12, arr.indexOf(12) + 1);
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf
【讨论】:
indexOf方法在旧浏览器中可能无法使用,需要使用shim。
另一种可能的解决方案:
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) 测试,以便它更像规范,尽管它很少会有所作为。
n ...为什么?也许你的意思是!!? ...哦,我明白了。我的想法是for 而不是if。没关系。
--n === 0。我使用n 作为一种计数器。
i in this。现在它至少应该看起来更好:)
我会使用 for 循环遍历数组
var 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 已全局定义...哇...