我有一个充满数字的数组。这是一个例子:

myArray = [0,1,2,4,5];

我需要找到从1开始的最低未使用数字,因此在这种情况下将是3。

我一直在阅读使用indexOf的方法,但是不确定如何将其用于特定目的。

最佳答案

假设数组未排序,则始终从0开始,并考虑如果没有缺失,则希望找到最大的数字:

var k = [6, 0, 1, 2, 4, 5];

k.sort(function(a, b) { return a-b; });   // To sort by numeric

var lowest = -1;
for (i = 0;  i < k.length;  ++i) {
  if (k[i] != i) {
    lowest = i;
    break;
  }
}
if (lowest == -1) {
    lowest = k[k.length - 1] + 1;
}
console.log("Lowest = " + lowest);

记录答案3。如果其中也有3,则将记录7,因为没有其他数字丢失。

如果您并非总是从零开始,请使用偏移量:
var k = [6, 2, 3, 4, 5];

k.sort(function(a, b) { return a-b; });   // To sort by numeric

var offset = k[0];
var lowest = -1;
for (i = 0;  i < k.length;  ++i) {
  if (k[i] != offset) {
    lowest = offset;
    break;
  }
  ++offset;
}
if (lowest == -1) {
    lowest = k[k.length - 1] + 1;
}
console.log("Lowest = " + lowest);

日志回答7,因为启动序列后的2之后没有丢失。

09-06 16:02