如何在javascript中获取数组中的第二个元素索引?

如何在javascript中获取数组中的第二个元素索引?,javascript,arrays,indexof,Javascript,Arrays,Indexof,我有一个数组,如下所示: var arr = [10, 12, 34, 23, 12, 89, 34, 12]; 在这篇文章中,我已经12三次了。我想在JavaScript中找到12的第二个索引。我尝试了lastIndexOf(),但没有帮助。有什么方法可以找到它吗?array.indexOf(searchElement[,fromIndex]) 还有一种可能的解决方案: Array.prototype.nthIndexOf = function(e, n) { var index =

我有一个数组,如下所示:

var arr = [10, 12, 34, 23, 12, 89, 34, 12];
在这篇文章中,我已经
12
三次了。我想在JavaScript中找到
12
的第二个索引。我尝试了
lastIndexOf()
,但没有帮助。有什么方法可以找到它吗?

array.indexOf(searchElement[,fromIndex])


还有一种可能的解决方案:

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
Array.prototype.nthIndexOf=函数(e,n){
var指数=-1;
for(var i=0,len=this.length;i> 4

我将使用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;

   }

}
var first=false;
var指数=0;

对于(var i=0;iGreat solution to find second index:)请注意,array
indexOf
方法在旧浏览器中可能无法工作,您需要使用shim.Sad但为true。这段代码在iSorry@VisioN中不起作用,所有浏览器都能用。所以我接受他的答案+2
oO
有人试过吗<代码>i
未初始化,
索引
是全局定义的。。。哇…@PSR你能认出它吗?+1我觉得这是最干净的。我唯一要添加的是一个
(我在这里)
测试到
if
,这样它更像规范,尽管它几乎不会有什么不同…哦,等等,你在否定
n
…为什么?也许你的意思是
。。。哦,我明白了。我的心思在
for
而不是
if
。无所谓。@斜视它不是否定的,它是
--n===0
。我用
n
作为计数器。是的,我看错了。需要否定来防止破坏循环。“不知怎么的,我是从另一个角度看的。”斜视着说。顺便说一句,我同意这一点。现在它至少看起来更好了
:)
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;

   }

}