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

154
Visualizações
Si la propiedad del objeto tiene la misma identificación, inserte en una nueva matriz

Me gustaría insertar los nombres en un nuevo objeto si tienen la misma identificación. La solución aún no está ahí, pero me estoy acercando.

 const names = [ {id:1,name:"jame"}, {id:2,name:"jill"}, {id:3,name:"hanna"}, {id:3,name:"clark"} ] const newNames = [] // Something like this names.foreach((person,index) => { if(newNames[index].id === person.id){ newNames.push({id:person.index, names:[...newNames.name,person.name]}) }else{ newNames.push({id:person.index, person.name}) } })

El resultado sería algo como esto:

 const newNames = [ {id:1,name:"jame"}, {id:2,name:"jill"}, {id:3,names: {name:"clark",name:"hanna"}} ]

Problema: no se pueden leer las propiedades de undefined (leyendo 'id')

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

0

Una forma de hacerlo:

 const names = [ {id:1,name:"jame"}, {id:2,name:"jill"}, {id:3,name:"hanna"}, {id:3,name:"clark"} ]; let output = [] let ids = [...new Set(names.map(i=>i.id))]; ids.forEach((id) => { let res = names.filter((name) => name.id == id) output.push({id, name: res.length > 1 ? res.map(i => i.name) : res[0].name}) }) console.log(output)

Tenga en cuenta que he proporcionado una matriz para el atributo de name para que las entradas con varios nombres sean menos repetitivas.


Acompañando tu solución:

 names.forEach((person,index) => { let existingIndex = newNames.findIndex( (entry) => entry.id === person.id) if(existingIndex >= 0){ if(newNames[existingIndex].hasOwnProperty('name')) newNames[existingIndex] = ({id: person.id, names: [newNames[existingIndex].name,person.name]}) else newNames[existingIndex] = ({id: person.id, names: [...newNames[existingIndex].names,person.name]}) } else { newNames.push({id:person.id, name: person.name}) } })

La parte newNames[index].id en su solución original da como resultado un error porque newNames no tiene ningún elemento hasta el momento. Entonces, básicamente, newNames[0] da como resultado undefined .

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