Código de JavaScript - Determinar si un array de números son consecutivos

Imágen de perfil
Val: 1.045
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Determinar si un array de números son consecutivosgráfica de visualizaciones


JavaScript

estrellaestrellaestrellaestrellaestrella(2)
Publicado el 15 de Noviembre del 2019 por Katas
659 visualizaciones desde el 15 de Noviembre del 2019
Función que recibe un array de números y determina si son consecutivos.
Para determinar si son consecutivos, se ejecuta un bucle (recude) donde se resta el valor anterior con el valor actual+1. Si al final el resultado es 0 todos son consecutivos.

1
2
3
4
5
6
7
8
9
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

1
estrellaestrellaestrellaestrellaestrella(2)

Publicado el 15 de Noviembre del 2019gráfica de visualizaciones de la versión: 1
660 visualizaciones desde el 15 de Noviembre del 2019
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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)

Imágen de perfil
16 de Noviembre del 2019
estrellaestrellaestrellaestrellaestrella
No ha dejado ningún comentario
Responder
Imágen de perfil
17 de Noviembre del 2019
estrellaestrellaestrellaestrellaestrella
Muy buen aporte.
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;
}
}
Responder

Comentar la versión: 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s5657