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

Javascript 获取整数数组中的第一个最小可用整数键/id,javascript,jquery,arrays,algorithm,Javascript,Jquery,Arrays,Algorithm,假设我有一些键数组: var idlist= [1, 2, 3, 6]; 创建新对象后,我需要新的密钥/id,所以我需要这样的想法: fucntion getFirstFreeKey(keylist){ ??? } 在我的示例中,getFirstFreeKey(idlist)将返回4。此建议适用于 every()方法测试数组中的所有元素是否通过了所提供函数实现的测试 该算法查找连续的数字,如果发现间隔,则返回最后一个数字,并递增1 无功能(数组,开始){ 数组.every(函数(a){ 如

假设我有一些键数组:

var idlist= [1, 2, 3, 6];
创建新对象后,我需要新的密钥/id,所以我需要这样的想法:

fucntion getFirstFreeKey(keylist){
???
}
在我的示例中,getFirstFreeKey(idlist)将返回4。

此建议适用于

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

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

无功能(数组,开始){
数组.every(函数(a){
如果(开始===a){
开始=a+1;
返回true;
}
});
返回启动;
}
写(自由([1,2,3,6],1)+'
');//4. document.write(免费([1,2,3,4],1)+'
');//5. document.write(免费([2,3,4],1)+'
');//1.
document.write(免费([],1)+'
');//1
假设您的列表已排序,并且您需要下一个免费序列号:

var freeNum;

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

return freeNum;
var-freeNum;
for(var i=0;i
{1,2,3,6}
这不是一个有效的数组或对象。getFirstFreeKey是否返回元素计数?如何定义
free
?“first free”是[1,2,3,6]情况下现有keyId数组中不存在的最小整数。4您是对的。它应该在[…]而不是{}这个算法的时间复杂度是多少?O(n)?在O(logn)中没有实现这一点的方法吗?二进制搜索?不短。开销太大。您的解决方案也仅适用于排序数组,只需将array.sort()添加到您的解决方案中即可。工作完美!非常感谢。假设您的列表已排序,并且您需要下一个可用序列号: