如何使用值>;确定javascript数组中最后一项的索引;0

如何使用值>;确定javascript数组中最后一项的索引;0,javascript,jquery,Javascript,Jquery,正如我的问题所述,如何确定JavaScript数组中最后一个值大于0的项的索引 所以如果myarray=[12,35,56,0,42,0] 如何找到此数组中最后一个正整数的索引?i、 在这个例子中,答案是4(第42个)。没有捷径,只需从长度-1到0(包括)向后循环数组,并在第一个>0条目处停止。没有捷径,只需从长度-1到0(包括)向后循环数组即可然后在第一个>0条目处停止。尝试以下操作: var array = [12, 35, 56, 0, 42, 0]; function getLastNo

正如我的问题所述,如何确定JavaScript数组中最后一个值大于0的项的索引

所以如果myarray=
[12,35,56,0,42,0]


如何找到此数组中最后一个正整数的索引?i、 在这个例子中,答案是4(第42个)。

没有捷径,只需从
长度-1
0
(包括)向后循环数组,并在第一个
>0
条目处停止。

没有捷径,只需从
长度-1
0
(包括)向后循环数组即可然后在第一个
>0
条目处停止。

尝试以下操作:

var array = [12, 35, 56, 0, 42, 0];
function getLastNotZero(array){
    var t = 0, i = array.length-1;
    while(t <= 0 && i >= 0){
        t = array[--i];
    }
    return i-1;
}
getLastNotZero(array);
//Returns 4
var数组=[12,35,56,0,42,0];
函数getLastNotZero(数组){
var t=0,i=array.length-1;
while(t=0){
t=数组[--i];
}
返回i-1;
}
getLastNotZero(数组);
//返回4
试试这个:

var array = [12, 35, 56, 0, 42, 0];
function getLastNotZero(array){
    var t = 0, i = array.length-1;
    while(t <= 0 && i >= 0){
        t = array[--i];
    }
    return i-1;
}
getLastNotZero(array);
//Returns 4
var数组=[12,35,56,0,42,0];
函数getLastNotZero(数组){
var t=0,i=array.length-1;
while(t=0){
t=数组[--i];
}
返回i-1;
}
getLastNotZero(数组);
//返回4
希望这有助于:

for(var i=myarray.length-1; i>=0;i--){
    if(myarray[i] > 0){
       alert(i);
       break;
  }
}
if(i<0)
alert(i);
for(var i=myarray.length-1;i>=0;i--){
如果(myarray[i]>0){
警报(一);
打破
}
}
如果(我希望这有帮助:

for(var i=myarray.length-1; i>=0;i--){
    if(myarray[i] > 0){
       alert(i);
       break;
  }
}
if(i<0)
alert(i);
for(var i=myarray.length-1;i>=0;i--){
如果(myarray[i]>0){
警报(一);
打破
}
}
如果(i这样做:

var myarray = [12, 35, 56, 0, 42, 0];
var found = {};
found.value = 0;
found.index = 0;
var j = myarray.length;
for (j; j>0; j--) {
    if (myarray[j] > 0) {
        found.value = myarray[j];
        found.index = j;
        break;
    }
}
alert(found.index);
编辑:注意,上述内容不会澄清0索引或无索引,因此:

found.value = undefined;
found.index = undefined;
var j = myarray.length;
for (j; j>0; j--) {
    if (myarray[j] > 0) {
        found.value = myarray[j];
        found.index = j;
        break;
    }
}
alert(found.index);
这应该做到:

var myarray = [12, 35, 56, 0, 42, 0];
var found = {};
found.value = 0;
found.index = 0;
var j = myarray.length;
for (j; j>0; j--) {
    if (myarray[j] > 0) {
        found.value = myarray[j];
        found.index = j;
        break;
    }
}
alert(found.index);
编辑:注意,上述内容不会澄清0索引或无索引,因此:

found.value = undefined;
found.index = undefined;
var j = myarray.length;
for (j; j>0; j--) {
    if (myarray[j] > 0) {
        found.value = myarray[j];
        found.index = j;
        break;
    }
}
alert(found.index);
尝试以下解决方案:

var myarray = [12, 35, 56, 0, 42, 0], index;
$.each(myarray,function(idx,el){
    if(el > 0){ 
        index = idx;
    }
});
alert('Index:'+index+', value:'+myarray[index]);
尝试以下解决方案:

var myarray = [12, 35, 56, 0, 42, 0], index;
$.each(myarray,function(idx,el){
    if(el > 0){ 
        index = idx;
    }
});
alert('Index:'+index+', value:'+myarray[index]);

您可以使用
.reverse()
.findIndex
获取反向索引,然后执行一些基本算法来翻转它:

> myarray = [12, 35, 56, 0, 42, 0]
> var ridx = myarray.slice().reverse().findIndex(n => 0 < n)
1
> var idx = myarray.length - 1 - ridx
4
myarray=[12,35,56,0,42,0] >var ridx=myarray.slice().reverse().findIndex(n=>0var idx=myarray.length-1-ridx 4.
您可以使用
.reverse()
.findIndex
获得反向索引,然后执行一些基本算法来翻转它:

> myarray = [12, 35, 56, 0, 42, 0]
> var ridx = myarray.slice().reverse().findIndex(n => 0 < n)
1
> var idx = myarray.length - 1 - ridx
4
myarray=[12,35,56,0,42,0] >var ridx=myarray.slice().reverse().findIndex(n=>0var idx=myarray.length-1-ridx 4.

只需循环并检查每个数字只需循环并检查每个数字我需要找到一个大于0的值!0我看到你已经修复了
=
=
的对比,这很好。请注意,这仍然是一个无限循环。编辑啊,现在你也修复了这个问题。在这里,单个
=
是一个打字错误,似乎让我损失了这个答案:/。不过,这不是一个无限循环。我发表评论时的版本没有检查
I
。我想循环最终会断开,因为
未定义它需要找到一个值>0不是!0我看到你已经修复了
=
=
的对比,这很好。提醒你,这仍然是一个无限循环。编辑啊,现在你已经修复了这也是。在那里,单一的
=
是一个打字错误,似乎让我失去了这个答案:/。但这不是一个无限循环。我发表评论时的版本没有检查
I
。我想循环最终会被打破,因为
真的没有定义……为什么我要用一些代码添加一个答案。这个答案正是正确的。Thanks T.J.Crowder,这就是我要做的。真的……为什么我要添加一个带有代码的答案。这个答案正是正确的。谢谢T.J.Crowder,这就是我要做的。你需要向后看数组,而不是向前看。@Leetylor:从技术上讲,上面的方法是有效的(因为他直到最后才打破循环)。这比必要的工作要困难得多。@T.J.Crowder-这是真的。你需要在数组中向后走,而不是向前走。@Leetylor:从技术上讲,上述方法是有效的(因为他直到最后才打破循环)。这比必要的工作要困难得多。@T.J.Crowder-这是真的。