2017-03-07 117 views
1

我正在使用javascript \ jquery,我需要检查数值数组值是否是顺序连续的,并返回不正确的值。Javascript Jquery检查数值数组值是否连续并且连续并返回不正确的值

ARR = [1,2,3,10,15,30] 阵列是顺序的,但只有1,2,3是contigous ... 10 15和30是不正确的。

UPDATE

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

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

由于提前, CLA

回答

1

您coud使用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)

编辑额外的问题。

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

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; }

+0

如果阵列是这样的ARR = [1,2,3,10,11,12,15,30,50]正确序列应该是2 ... 1,2,3和10,11,12 我如何识别多个正确的序列? – Memento

+0

请提出一个新问题。 –

1

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);