Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

134
Vistas
Algoritmo de Javascript: si la resta de índices es negativa, devuelva los elementos de la matriz como sea posible

Imagina una lista de elementos:

 const data = [0, 1, 2, 3, 4, 5]

Una variable representa el elemento principal:

 const initialIndex = 1;

Y la otra variable, la cantidad de elementos extra que también se recogerán detrás del "elemento principal".

 const extraCount = 2;

Entonces, si por ejemplo, llamo al método "algoritmo" de la siguiente manera:

 function algorithm(data, initialIndex, extraCount) { ... } console.log(algorithm(data, 2, 1));

Me devolverá [1, 2] // El índice inicial y el primer elemento detrás de él

O, si por ejemplo vuelvo a llamar con

 console.log(algorithm(data, 4, 3));

Me devolverá [1, 2, 3, 4] // El elemento inicial y 3 elementos detrás de él

¿Cómo puedo hacer, de una manera sencilla, para solucionar este caso de uso

 console.log(algorithm(data, 1, 2)); // Negative index...

Pero... necesito devolver al menos los artículos posibles.

Quiero decir:

Para console.log(algorithm(data, 1, 2)); Obtengo [0, 1] // Índice inicial y el primer elemento anterior (no dos porque el segundo tiene un índice negativo)

Para console.log(algorithm(data, 2, 5)); obtengo [0, 1, 2]

Para console.log(algorithm(data, 0, 10)); obtengo [0]

Para console.log(algorithm(data, 3, 7)); obtengo [0, 1, 2, 3]

EDITAR

Esto es lo que he probado

 const data = [0, 1, 2, 3, 4]; const initialIndex = 2; const extraCount = 2; const start = initialIndex - extraCount >= 0 ? initialIndex - extraCount : initialIndex; const end = initialIndex + 1; console.log(data.slice(start, end));

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Lo tienes correcto. Simplemente reemplace initialIndex por 0 en otra condición

 const data = [0, 1, 2, 3, 4]; let func = (initialIndex,extraCount) => { const start = initialIndex - extraCount >= 0 ? initialIndex - extraCount : 0; const end = initialIndex + 1; console.log(data.slice(start, end)); }; func(2,2); func(1,2); func(3,7);

Nota: hay muchas otras formas de hacerlo, pero esta es la que buscabas, así que solo señalé el problema.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede usar slice(-count) para devolver elementos desde el final de la matriz, algo como esto:

 if (extraCount > initialIndex) { return [ // This will return elemnts from beginning of array up to initialIndex ...data.slice(0, initialIndex), // This will return the missing elements looped from the other side of array ...data.slice(extraCount - initialIndex) ]; }

También debe incorporar otros controles de cordura en su código, o por ejemplo, el número total de elementos no debe exceder la longitud de la matriz, etc.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda