Javascript \ Jquery检查数值数组值是否是连续且连续的并返回不正确的值

时间:2017-03-07 14:45:36

标签: javascript jquery arrays numeric sequential

我正在使用javascript \ jquery,我需要检查数值数组值是连续的还是连续的,并返回不正确的值。

实施例

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 < / p>

如何识别多个正确的序列?

提前致谢, CLA

2 个答案:

答案 0 :(得分:2)

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

&#13;
&#13;
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)
&#13;
&#13;
&#13;

编辑其他问题。

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

&#13;
&#13;
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);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;

答案 1 :(得分:1)

&#13;
&#13;
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);
&#13;
&#13;
&#13;