Javascript 筛选数组中缺少的值时获取错误值

Javascript 筛选数组中缺少的值时获取错误值,javascript,arrays,filter,Javascript,Arrays,Filter,我希望使用javascript从序列数组中筛选缺少的数字,但我得到的值是错误的。我在下面解释我的代码 let arr1 = [1,2,3,4,5,6,7,8,10]; arr1 = arr1.filter((item,pos) => { if(pos < arr1.length && arr1[pos+1] !== undefined) { if(item !== arr1[pos+1]-1){ //console.log(item,arr1

我希望使用javascript从序列数组中筛选缺少的数字,但我得到的值是错误的。我在下面解释我的代码

let arr1 = [1,2,3,4,5,6,7,8,10];

arr1 = arr1.filter((item,pos) => {
  if(pos < arr1.length && arr1[pos+1] !== undefined) {
    if(item !== arr1[pos+1]-1){
      //console.log(item,arr1[pos+1]-1);
      return arr1[pos+1]-1;
    }
  }

})

console.log(arr1); 
设arr1=[1,2,3,4,5,6,7,8,10];
arr1=arr1.过滤器((项目,位置)=>{
如果(位置

这里我的数组中缺少
9
,但我得到的输出是
[8]

您需要一种不同的方法,因为您的筛选只返回数组中的值,而不是缺少的值。以及你没有得到超过一个值的洞

该解决方案迭代数组,并将一个变量作为期望值,如果该值小于数组值,则迭代直到数组中的给定值

let array=[1,2,3,6,7,8,10],
缺少=[],
值=数组[0],
我
对于(i=0;i控制台日志(丢失)您可以按如下方式执行。在这里迭代所有项,检查当前项和当前项的前一项之间的差异是否为1,如果不是,则返回(当前项-1)

设arr1=[1,2,3,4,5,6,7,8,10];
对于(变量i=1;i}
过滤器
方法仅返回:

filter()为中的每个元素调用一次提供的回调函数 一个数组,并构造一个新数组,其中包含 回调返回强制为true的值

所以
filter
方法无法从现有数组返回递增的值

您可以使用
reduce
方法查找差距:

设arr1=[1,2,3,4,5,6,7,8,10];
arr1=arr1.减少((a,c,i)=>{
如果((c+1)控制台日志(arr1)
如前所述,不能使用
过滤器
,因为它的目的是过滤给定数组的值

您可以尝试使用
reduce
查找多个间隙:

让arr1=[1,2,4,5,6,7,8,12];
arr1=arr1.减少((进位、项目、索引)=>{
项目++;
while(index!==arr1.length-1&&item控制台日志(arr1)我认为这对像
[1,2,3,6,7,8,10]
这样的东西不起作用;)。您当前的方法仍然无法用于未排序的数组(如
[6,14,9,8]
)@KooiInc,拜托。op提供了一个有序数组。如果不是的话,分类会有帮助。好吧,好吧,也许我读的太多了today@KooiInc当然没有,但行动组已经提到他已经订购了。如果它不是有序的,那么在减少之前可以进行自然排序