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

125
Vistas
Inserte un elemento en un índice específico dentro de la matriz que se está repitiendo

¿Cuál es la mejor manera de actualizar una matriz insertando el nuevo elemento en un índice específico cuando se cumple cierta condición durante el bucle?

 const exampleArray = [ {item: 1, count: 5}, {item: 2, count: 20}, {item: 3, count: 10}, {item: 6, count: 9} {item: 4, count: 5}]

Quiero hacer un bucle de exampleArray mientras hago un seguimiento del conteo e inserto un nuevo elemento justo después cuando el conteo es mayor o igual a 10 y luego restablezco el conteo a 0 para el siguiente ciclo

entonces el resultado que quiero es

 const resultArray = [ {item: 1, count: 5}, {item: 2, count: 20}, {item: 'new item 1 as count is over 10', count: 0}, {item: 3, count: 10}, {item: 'new item 2 as count is equal to 10', count: 0}, {item: 6, count: 9}, {item: 4, count: 5}, {item: 'new item 3 as count is > 10, previous two counts (9 + 5 )', count: 0 }]

probé esto

 let count = 0 exampleArray.forEach((item, index) => { count += item.count if(count >= 10) { exampleArray.splice(index + 1, 0, {item: 'item to be added', count: 0} count = 0 } })
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Ambos crean una nueva matriz: si desea sobrescribir, use let y asigne de nuevo al original

TJ Mapa sugerido y plano - eso es un planoMapa

 const exampleArray = [ {item: 1, count: 5}, {item: 2, count: 20}, {item: 3, count: 10}, {item: 4, count: 5}]; let count = 0; const resultArray = exampleArray.flatMap(item => { count += item.count; if (count >= 10) { count = 0 return [item, {item:"new", count:0}] } return item; }); console.log(resultArray);

Reducir

 const exampleArray = [ {item: 1, count: 5}, {item: 2, count: 20}, {item: 3, count: 10}, {item: 4, count: 5}]; let count = 0; const resultArray = exampleArray.reduce((acc,cur) => { count += cur.count; acc.push(cur); if (count >= 10) { count = 0 acc.push({item:"new", count:0}) } return acc; },[]); console.log(resultArray);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Yo optaría por un bucle for o for...of simple. Si está feliz de crear una nueva matriz (si no, veo que no está en su pregunta, vea a continuación):

 const result = []; for (const item of exampleArray) { count += item.count; result.push(item); if (count >= 10) { result.push({item: 'item to be added', count: 0}); } }

o (originalmente usé map ... flat() , porque me olvidé nuevamente de flatMap ; mplungjan me lo recordó ) :

 let count = 0; const result = exampleArray.flatMap(item => { count += item.count; if (count >= 10) { return [item, {item: 'item to be added', count: 0}]; } return item; });

Ejemplo en vivo:

 const exampleArray = [ {item: 1, count: 5}, {item: 2, count: 20}, {item: 3, count: 10}, {item: 4, count: 5} ]; let count = 0; const result = []; for (const item of exampleArray) { count += item.count; result.push(item); if (count >= 10) { result.push({item: 'item to be added', count: 0}); } } console.log(result); count = 0; const result2 = exampleArray.map(item => { count += item.count; if (count >= 10) { return [item, {item: 'item to be added', count: 0}]; } return item; }).flat(); console.log(result2);

Si realmente desea modificar la matriz existente, el bucle for le permite controlar la variable de índice:

 for (let index = 0; index < exampleArray.length; ++index) { const item = exampleArray[index]; count += item.count; if (count >= 10) { exampleArray.splice(index + 1, 0, {item: 'item to be added', count: 0}); count = 0; ++index; // Skip the item we just added } }

Ejemplo en vivo:

 const exampleArray = [ {item: 1, count: 5}, {item: 2, count: 20}, {item: 3, count: 10}, {item: 4, count: 5} ]; let count = 0; for (let index = 0; index < exampleArray.length; ++index) { const item = exampleArray[index]; count += item.count; if (count >= 10) { exampleArray.splice(index + 1, 0, {item: 'item to be added', count: 0}); count = 0; ++index; // Skip the item we just added } } console.log(exampleArray);

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