获取数组中非null的特定值的位置(第一个和最后一个)

Obtaining the position (first and last) of a specific value that is not null in a array

本文关键字:位置 第一个 最后一个 数组 null 获取      更新时间:2023-09-26

我有下一个数组:

[null,null,null,null,null,null,2,10,29,43,45,40,54,39,13,1,null,null,null,null,null]

我需要知道数组中第一个不为null的位置是什么,最后一个也不为null。

在这个特定的例子中,第一个将是6(将0计数为位置1)和15。

感谢

var firstPos = -1, lastPos = -1;
for(var i = 0; i < arr.length; i++) {
    if(arr[i] !== null) {
        if(firstPos == -1) {
            firstPos = i;
        }
        lastPos = i;
    }
}

使用非标准数组方法:

var arr = [null,null,null,null,null,null,2,10,29,43,45,40,54,39,13,1,null,null,null,null,null];
var mapped = arr.map(function (i) {
    "use strict";    
    return i !== null;
}); 
var first = mapped.indexOf(true);
var second = mapped.lastIndexOf(true);

map和indexOf以及lastIndexOf都需要IE9+浏览器或垫片。不过,它们看起来确实很酷。