2017-03-07 6 views
1

javascript \ jquery로 작업 중이며 숫자 배열 값이 순차적으로 인접하고 잘못된 값을 반환하는지 확인해야합니다.Javascript Jquery 숫자 배열 값이 순차적으로 인접하여 잘못된 값을 반환하는지 확인하십시오.

도착 = 1,2,3,10,15,30] 배열 순차적 만 1,2,3 (10) (15) 및 (30)이 잘못된 ... 인접하게된다.

UPDATE

배열이 도착 같은 경우 = 1,2,3,101112153050] 올바른 서열이어야 2 ... 2, 3 및 10,11,12

어떻게 여러 개의 올바른 시퀀스를 식별 할 수 있습니까? 사전에

감사합니다, 클라

답변

1

당신은 Array#filter를 사용하고 전임자 나 후임자를 확인 coud.

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

+0

배열이 도착 등 = 1,2,3,101112153050] 정확한 순서인지 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);