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

176
Visualizações
Iterar una matriz anidada de objetos, encontrar la identificación y actualizar el objeto que coincida con la identificación

Tengo la siguiente entrada de la siguiente manera. Es una matriz de objetos y cada objeto tiene estados que también es una matriz de objetos. Quiero agregar details dentro del objeto de estados cuando la identificación del estado coincida con la id que se menciona a continuación. es decir 82175746

 const input = [ { "country": { "id": 87745195, "action": "Analyze" }, "states": [ { "id": 83589582, "action": "Verify" }, { "id": 87335656, "action": "Analyze" } ] }, { "country": { "id": 83861166, "action": "Verify" }, "states": [ { "id": 82175746, "action": "Closed" }, { "id": 78745158, "action": "Closed" } ] } ] const details = { "totalOpenRadars": 1, "totalClosedRadars": 1 } const id = 82175746

Y este es el resultado que estoy tratando de lograr. Tenga en cuenta que la identificación de 82175746 se compara con todas las identificaciones estatales. una vez que se encuentra una coincidencia, los detalles mencionados anteriormente se agregan como se muestra a continuación al objeto coincidente.

 const result = [ { "country": { "id": 87745195, "action": "Analyze" }, "states": [ { "id": 83589582, "action": "Verify" }, { "id": 87335656, "action": "Analyze" } ] }, { "country": { "id": 83861166, "action": "Verify" }, "states": [ { "id": 82175746, "action": "Closed", "details": { "totalOpenRadars": 1, "totalClosedRadars": 1 } }, { "id": 78745158, "action": "Closed" } ] } ]

Para lograr esto, lo intenté de esta manera, pero no puedo obtener el resultado correctamente. ¿Alguien puede decirme dónde me equivoqué?

 const result = input.forEach((element) => { element.states.forEach((state) => { if(state.id === id) { state.details = details } }); });
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Array.forEach siempre devuelve undefined , por lo que el result siempre será undefined . Si observa la input después de su operación, contiene sus detalles como especificó.

Alternativamente, puede distribuir input en una nueva matriz llamada result y realizar su bucle en el result si tiene la intención de mantener la input igual.

 const input = [ { "country": { "id": 87745195, "action": "Analyze" }, "states": [ { "id": 83589582, "action": "Verify" }, { "id": 87335656, "action": "Analyze" } ] }, { "country": { "id": 83861166, "action": "Verify" }, "states": [ { "id": 82175746, "action": "Closed" }, { "id": 78745158, "action": "Closed" } ] } ] const details = { "totalOpenRadars": 1, "totalClosedRadars": 1 } const id = 82175746 input.forEach((element) => { element.states.forEach((state) => { if(state.id === id) { state.details = details } }); }); console.log(input);

about 4 years ago · Juan Pablo Isaza Relatório

0

Puedes usar Array.prototype.map() :

 const input = [{"country": { "id": 87745195, "action": "Analyze" },"states": [{ "id": 83589582, "action": "Verify" },{ "id": 87335656, "action": "Analyze" }]},{"country": { "id": 83861166, "action": "Verify" },"states": [{ "id": 82175746, "action": "Closed" },{ "id": 78745158, "action": "Closed" }]}] const details = { "totalOpenRadars": 1, "totalClosedRadars": 1 } const id = 82175746 const result = input.map(item => item.states.map(state => ({ ...state, ...(state.id === id ? { details } : {}) }))) console.log(result)

about 4 years ago · Juan Pablo Isaza Relatório

0

esto debería ser hacerlo

 const appendDetails = (data, id, details) => data.map(d => { return { ...d, states: d.states.map(s => { if(s.id !== id){ return s } return { ...s, details } }) } }) const input = [ { "country": { "id": 87745195, "action": "Analyze" }, "states": [ { "id": 83589582, "action": "Verify" }, { "id": 87335656, "action": "Analyze" } ] }, { "country": { "id": 83861166, "action": "Verify" }, "states": [ { "id": 82175746, "action": "Closed" }, { "id": 78745158, "action": "Closed" } ] } ] const details = { "totalOpenRadars": 1, "totalClosedRadars": 1 } const id = 82175746 console.log(appendDetails(input, id, details))

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