我有下一个数组:
[null,null,null,null,null,null,2,10,29,43,45,40,54,39,13,1,null,null,null,null,null]我需要知道该数组中第一个不为空的位置,最后一个不为空的位置。
在这个特定的示例中,first将是6(将0计为位置1)和15。
谢谢
发布于 2012-03-13 22:52:47
var firstPos = -1, lastPos = -1;
for(var i = 0; i < arr.length; i++) {
if(arr[i] !== null) {
if(firstPos == -1) {
firstPos = i;
}
lastPos = i;
}
}发布于 2012-03-13 22:58:14
使用非标准数组方法:
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+浏览器或填充程序。然而,它们看起来确实很酷。
https://stackoverflow.com/questions/9686438
复制相似问题