2017-03-07 1 views
1

Je travaille avec javascript \ jquery et je dois vérifier si les valeurs d'un tableau numérique sont séquentielles et contiguës et retourner des valeurs incorrectes.Javascript Jquery vérifie si un tableau numérique est séquentiel et contigu et retourne des valeurs incorrectes

Exemple

arr = array [1,2,3,10,15,30] est séquentielle, mais seulement 1,2,3 sont Contigous ... 10 15 et 30 sont incorrects.

UPDATE

si le tableau est comme ceci arr = [1,2,3,10,11,12,15,30,50] les séquences correctes doivent être 2 ... 1,2, 3 et 10,11,12

Comment puis-je identifier plusieurs séquences correctes?

Merci à l'avance, Cla

Répondre

1

Vous utilisez coud Array#filter et vérifier le prédécesseur ou successeur.

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)

EDIT pour la question supplémentaire.

Vous pouvez utiliser deux variables pour les contrôles de gauche et de droite et tester l'identifiant pour ajouter un tableau vide et plus tard pour pousser la valeur vers le dernier tableau interne.

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

si le tableau est comme celle-ci arr = [1,2,3,10,11,12,15,30,50] les séquences correctes devrait être 2 ... 1,2,3 et 10,11,12 Comment puis-je identifier plusieurs séquences correctes? – Memento

+0

s'il vous plaît poser une nouvelle question. –

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