Javascript 从与数组中的数组不同的数组中获取一个数字

Javascript 从与数组中的数组不同的数组中获取一个数字,javascript,Javascript,我有一个数组,它可以有不同的数字或空 [4,2] // here I need 0 [0,1,2] // here I need 3 [] // here I need 0 [1,2,4,7] // here I need 0 [0,5,3] // here I need 1 [0,1,2,3,5] // here I need 4 我需要得到一个与数组中的数字不同的数字,如果跳过某个数字,则得到它,如果这些数字按顺序排列,则需要得到最大的数字+1 这是我的解决方案,但我认为它不好 let

我有一个数组,它可以有不同的数字或空

[4,2] // here I need 0
[0,1,2] // here I need 3
[] // here I need 0
[1,2,4,7] // here I need 0
[0,5,3] // here I need 1
[0,1,2,3,5] // here I need 4
我需要得到一个与数组中的数字不同的数字,如果跳过某个数字,则得到它,如果这些数字按顺序排列,则需要得到最大的数字+1

这是我的解决方案,但我认为它不好

 let arr = [];
     let arrSort = arr.sort();
      let number = null;
      for (let i = 0; i < arrSort.length; i++) {
        if (arrSort.indexOf(i) === -1) {
          number = i;
        }
      }
      if (number === null) {
        number = arrSort.length;
      }
      console.log(number)
让arr=[];
设arrSort=arr.sort();
设number=null;
for(设i=0;i

我已经尝试了几个选项,但它们都非常大,我想也许你会建议哪个线程是一个简单的选项?

你可以使用
Array.prototype.reduce
来实现这一点

var getNextNumber=(arr)=>arr.length==0?0:arr.sort().reduce((acc,el,i)=>{
返回acc!=-1?acc:el!==i?i:i===arr.length-1?arr.length:-1;
}, -1);
log(getNextNumber([]);
log(getNextNumber([0,1,2,4,5]);

log(getNextNumber([0,1,2,3,4,5])如果相等,可以为每个值存储零和增量

这种方法适用于短路,如果没有必要,不需要访问所有值

函数getNext(数组){ var值=0; array.every(v=>v==value&&++value); 返回值; } console.log(getNext([4,2]);//0 log(getNext([0,1,2]);//3. console.log(getNext([]);//0 log(getNext([1,2,4,7]);//0 log(getNext([0,5,3]);//1. log(getNext([0,1,2,3,5]);//4

。作为控制台包装器{max height:100%!important;top:0;}
您尝试过解决这个问题吗?是的,但结果是有很多带有排序、循环等的代码。,我想我会被告知哪个线程是一个简单的选项,或者可能已经有一个现成的方法。请分享你做了什么,或者你可以向你解释为什么这个线程是关闭的,因为需要更多的关注?被问的问题非常清楚,OP只是问如何做一件事。唯一缺少的是一个代码示例,最坏情况下是“需要更多细节或清晰”,或者是一个否决票。如果问题在17分钟前结束,我如何在1分钟前发布我的答案。我认为这比我的好,因为我希望你只使用一种方法,而不是我有一大堆检查,谢谢