sonConsecutivos([4,3,2,1]); // 0 SI
sonConsecutivos([5,4,3,2,1,0,-1,-2]); // 0 SI
sonConsecutivos([1,2,3,4,5,6,7,8,9,10,11]); // 0 SI
sonConsecutivos([-5,-4,-3,-2]); // 0 SI
sonConsecutivos([5,3,2,1]); // 1 NO
sonConsecutivos([1,2,4,5]); // 1 NO
sonConsecutivos([]); // -1 NO
sonConsecutivos([5]); // -1 NO
sonConsecutivos(["casa"]); // -1 NO
function sonConsecutivos(arrayNumeros)
{
if (arrayNumeros.length<=1) {
return -1;
}
// si el orden es creciente lo giramos
if (arrayNumeros[0]<arrayNumeros[1]) {
arrayNumeros.reverse();
}
// devuelve 0 si son consecutivos
return arrayNumeros.reduce((acum, el, index, array)=>{
if (index==1) {
acum=0;
}
return +acum+array[index-1]-(el+1);
});
}
Comentarios sobre la versión: 1 (2)
Otra solución, podría ser tomar el valor absoluto de la diferencia de los números junto con una estructura while para no tener que recorrer todo el array, y romper el ciclo cuando no se cumpla la condición, algo así.
function sonConsecutivos(array){
if(array.length < 2) return -1;
let i = 0;
while(i < array.length - 1) {
if(Math.abs(array[i] - array[++i]) !== 1) return -1;
return 0;
}
}