获取整数数组中的第一个最小可用整数键/ID

Get first minimum free integer key/id in array of integer

本文关键字:整数 ID 数组 第一个 获取      更新时间:2023-09-26

假设我有一些键数组:

var idlist= [1, 2, 3, 6];

在我创建新对象后,我需要为它提供新的键/ID,所以我需要这样的想法:

fucntion getFirstFreeKey(keylist){
???
}

在我的示例中,getFirstFreeKey(idlist)将返回4。

此提案适用于Array#every()

every() 方法测试数组中的所有元素是否都通过了提供的函数实现的测试。

该算法查找连续的数字,如果发现间隙,则返回最后一个数字,递增 1。

function free(array, start) {
    array.every(function (a) {
        if (start === a) {
            start = a + 1;
            return true;
        }
    });
    return start;
}
document.write(free([1, 2, 3, 6], 1) + '<br>'); // 4
document.write(free([1, 2, 3, 4], 1) + '<br>'); // 5
document.write(free([2, 3, 4], 1) + '<br>');    // 1
document.write(free([], 1) + '<br>');           // 1

假设您的列表已排序并且您需要下一个空闲序列号:

var freeNum;
for(var i = 0; i < idlist.Length; i++)
{
    if(idList[i] != i + 1)
    {
         freeNum = i + 1;
         break;
    }
}
return freeNum;