1

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

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

我如何找到这个数组中最后一个正整数的索引?即在这种情况下,答案将是 4(第 42 号)。

4

6 回答 6

5

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

于 2012-12-07T15:43:53.360 回答
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
于 2012-12-07T15:45:22.630 回答
0

希望这可以帮助:

for(var i=myarray.length-1; i>=0;i--){
    if(myarray[i] > 0){
       alert(i);
       break;
  }
}
if(i<0)
alert(i);
于 2012-12-07T15:46:24.067 回答
0

这应该这样做:

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);
于 2012-12-07T15:57:12.427 回答
0

试试这个解决方案:

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]);
于 2012-12-07T16:14:59.323 回答
0

.reverse()你可以用and得到反向索引.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
于 2017-04-21T11:51:02.477 回答