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

Imágen de perfil
Val: 374
Bronce
Ha aumentado su posición en 10 puestos 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
516 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)

Actualizado el 16 de Noviembre del 2019 (Publicado el 15 de Noviembre del 2019)gráfica de visualizaciones de la versión: 1
516 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