Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

115
Visualizações
Inserte nuevos objetos JSON en una matriz JS anidada según la condición

Para uno de los requisitos de mi aplicación de comercio electrónico, tengo una matriz anidada del formulario (Muestra):

 const data = [ { "id": 1, "group": "upper-wear", "labels": [ { "type": "shirts", "quantity": "20", }, ], popular: true }, { "id": 2, "group": "bottom-wear", "lables": [ { "type": "trousers", "quantity": "31", }, ], popular: true }, ]

Para esta matriz, necesito insertar nuevos objetos en las 'etiquetas' de la matriz si el valor del grupo es igual a 'desgaste superior'.

 const newDataToInsert = [ { "type": 'blazers', "quantity": 19 }, ]

Esto es lo que intenté hasta ahora, teniendo en cuenta que por ahora solo necesito insertar una sola etiqueta (es decir, 'desgaste superior') (en el futuro, puede haber varias categorías de etiquetas 'desgaste superior', 'desgaste inferior', para ser insertado en):

 const updatedArray = data.map((datum) => { if (datum.group === 'upper-wear') { return { ...datum, labels: [...datum.labels, ...newDataToInsert] }; } }); console.log(updatedArray);

Pero parece haber un problema tonto que me falta ya que el resultado es así:

 [ { id: 1, group: 'upper-wear', labels: [ [Object], [Object] ], popular: true }, undefined ]

Sé que puede haber mejores enfoques disponibles, pero esto es lo que puedo considerar como la solución mínima por ahora.

cualquier ayuda para resolver la solución actual o mejor será muy apreciada.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Prueba con esto

 updatedArray = data.map((d) => { if (d.group && d.group === 'upper-wear') { return { ...d, labels: d.labels.concat(newDataToInsert) } } else { return d; } }) 

 const data = [ { "id": 1, "group": "upper-wear", "labels": [ { "type": "shirts", "quantity": "20", }, ], popular: true }, { "id": 2, "group": "bottom-wear", "lables": [ { "type": "trousers", "quantity": "31", }, ], popular: true }, ]; const newDataToInsert = [ { "type": 'blazers', "quantity": 19 }, ]; const updatedArray = data.map((d) => { if (d.group && d.group === 'upper-wear') { return { ...d, labels: d.labels.concat(newDataToInsert) } } else { return d; } }); console.log(updatedArray)

Explicación

Aquí, mientras mapeamos los data , verificamos la condición

SI

  • Si coincide, primero copiaremos todo el objeto de la variable b return { ...b }
  • después de eso, tomamos otra variable con el mismo nombre lables return { ...d, labels: d.labels.concat(newDataToInsert) } , Según la naturaleza predeterminada de JSON, la nueva variable con el mismo nombre contendrá el último valor
  • Aquí, en las etiquetas, primero tomamos una copia de los datos antiguos y luego los fusionamos con las etiquetas de matriz newDataToInsert labels: d.labels.concat(newDataToInsert) , fusionará 2 matrices y las almacenará en JSON con las labels de nombre

Más

  • En else solo devolvemos los valores actuales else { return d; }
about 4 years ago · Juan Pablo Isaza Relatório

0

En realidad, no necesita iterar con el map sobre la matriz. Simplemente encuentre un objeto en la matriz y cambie lo que desee.

 const data=[{id:1,group:"upper-wear",labels:[{type:"shirts",quantity:"20"}],popular:true},{id:2,group:"bottom-wear",lables:[{type:"trousers",quantity:"31"}],popular:true}]; const newDataToInsert=[{type:"blazers",quantity:19}]; data.find(({ group }) => group === 'upper-wear')?.labels.push(...newDataToInsert); console.log(data);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Relatório

0

No está devolviendo todos los objetos de su mapa. solo está devolviendo un resultado cuando se cumplen sus criterios. Esto está dando como resultado sus objetos indefinidos ...

 const data = [ { "id": 1, "group": "upper-wear", "labels": [ { "type": "shirts", "quantity": "20", }, ], popular: true }, { "id": 2, "group": "bottom-wear", "lables": [ { "type": "trousers", "quantity": "31", }, ], popular: true }, ] const newDataToInsert = [ { "type": 'blazers',"quantity": 19 }, ] const updatedArray = data.map(datum => { if (datum.group === 'upper-wear') datum.labels = [...datum.labels, ...newDataToInsert] return datum }); console.log(updatedArray);

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda