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

179
Vistas
Empujar x número de elementos de matriz a otra matriz condicionalmente

Quiero enviar una cantidad x de elementos de la matriz a otra matriz con la condición de que la cantidad máxima de elementos que se enviarán sea la diferencia de maxPushLimit (que es 720) y ya alreadyPushed (por lo que si alreadyPushed es, digamos, 300, solo 420 pueden ser empujado)

Condiciones especiales:

  • Si el total de todos los que ya se han alreadyPushed desde la array1 es > la longitud total de la array2 , ignore la última diferencia (los últimos x elementos que quedan de la array2 .
  • Si el total de todos los alreadyPushed de array1 es <longitud total de array2 , el último índice de array1 tendría redundancia (no sería 720, digamos, 710 si la diferencia es 10).

Escribí este código para lograrlo:
 const array1 = [ { id: 1, alreadyPushed: 500, }, { id: 2, alreadyPushed: 600, }, { id: 3, alreadyPushed: 700, }, { id: 4, alreadyPushed: 720, }, ]; const array2 = []; for (let i = 1; i < 361; i++) { array2.push(i); } const maxPushLimit = 720; let results = []; let array2Index = 0; for (let i = 0; i < array1.length; i++) { const array1Item = array1[i]; const limit = maxPushLimit - array1Item.alreadyPushed; console.log(limit); if (limit <= 0) { continue; } else { array1Item.array2Items = array2.slice(array2Index, limit); array2Index += limit; results.push(array1Item); } } console.log(results);

Tenga en cuenta que el orden de alreadyPushed no es importante (500, 600, 700, 720 son totalmente aleatorios)
Quiero que el resultado final se vea así:

 [ { id: 1, alreadyPushed: 500, array2Items: { // 220 array2Items } }, { id: 2, alreadyPushed: 600, array2Items: { // 120 array2Items } }, { id: 3, alreadyPushed: 700, array2Items: { // 20 array2Items } }, ];

Lo que estoy recibiendo:

 [ { id: 1, alreadyPushed: 500, array2Items: [ // 220 array2Items ] }, { id: 2, alreadyPushed: 600, array2Items: [] }, { id: 3, alreadyPushed: 700, array2Items: [] } ]
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

El problema es la operación de corte. Debería ser array2.slice(array2Index, array2Index + limit); .

about 4 years ago · Juan Pablo Isaza Denunciar

0

El problema está en esta expresión:

 array2.slice(array2Index, limit);

El segundo argumento no debe ser el tamaño del segmento, sino el índice final del segmento.

Así que cambia a:

 array2.slice(array2Index, array2Index + limit);
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