Javascript\Jquery 检查数值数组值是否连续且连续,return 值不正确

Javascript\Jquery check if a numeric array values are sequential and contiguous and return incorrect values

我正在使用 javascript\jquery,我需要检查数值数组值是否连续且连续,以及 return 不正确的值。

示例

arr = [1,2,3,10,15,30] 数组是连续的,但只有 1、2、3 是连续的...10、15 和 30 不正确。

更新

如果数组是这样的 arr = [1,2,3,10,11,12,15,30,50] 正确的序列应该是 2... 1,2,3 和 10,11, 12

如何识别多个正确序列?

提前致谢, 克拉

您可以使用Array#filter并检查前任或继任者。

var array = [1, 2, 3, 10, 15, 30],
    result = array.filter(function (a, i, aa) {
        return aa[i - 1] + 1 !== a && a + 1 !== aa[i + 1];
    });
    
console.log(result)

编辑其他问题。

您可以为左右检查和测试 id 使用两个变量来添加一个空数组,然后将值推送到最后一个内部数组。

var array = [1, 2, 3, 10, 11, 12, 15, 30, 50],
    result = array.reduce(function (r, a, i, aa) {
        var left = aa[i - 1] + 1 === a,
            right = a + 1 === aa[i + 1];

        if (!left && right && (!r[r.length - 1] || r[r.length - 1].length)) {
            r.push([]);
        }
        if (left || right) {
            r[r.length - 1].push(a);
        }
        return r;
    }, []);
        
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

var arr = [1,2,3,10,15,30],
arr1=[1,2,3,4,5,6,10],
arr2=[10,11,40,50];

var checkArray=function(array){
  var lastNum;
  array.forEach(function(num,index){
    if(index===0)
      lastNum=num;
    else{
      if(lastNum+1===num)
        lastNum=num;
      else
        console.log(num);
    }
  });
}
checkArray(arr);
console.log('----------------');
checkArray(arr1);
console.log('----------------');
checkArray(arr2);