Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

137
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!