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

81
Visualizações
Agregue o edite la matriz TypeScript según la condición dada

Tengo una matriz que se ve así

 people = [ {id:1, name:"Bob", lang:English}, {id:2, name:"Sally", lang:German,Hebrew}, {id:3, name:"Trish", lang:English}, ]

Tengo un método para agregar a la matriz o para editar la matriz existente en función de la entrada. Este método tiene un nuevo idioma que se proporciona. Estoy agregando un psuedocode (no se me ocurrió nada mejor ya que soy muy nuevo en Typescript y Javascript).

 onAddVariable() { //newLanguage is given to the input const people = people.map(person =>{ person.name === (new) //somehow to know if the name is a new name person.lang.push(newLanguage) return person } else{ people.push({id:4, name:newName, newLanguage}); return person } }

Si se da una nueva persona, entonces la salida debería verse así.

 people = [ {id:1, name:"Bob", lang:English}, {id:2, name:"Sally", lang:German,Hebrew}, {id:3, name:"Trish", lang:English}, {id:4, name:"Kash", lang:Urdu}, ]

Si se le da un nuevo idioma a una persona existente, entonces la salida debería verse como

 people = [ {id:1, name:"Bob", lang:English,Spanish}, {id:2, name:"Sally", lang:German}, {id:3, name:"Trish", lang:English}, {id:4, name:"Kash", lang:Urdu}, ]
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

simplemente puede agregar verificación e intentar algo como esto en su función

 let people = [ {id:1, name:"Bob", lang:["English"]}, {id:2, name:"Sally", lang:["German","Hebrew"]}, {id:3, name:"Trish", lang:["English"]}, ] let name1="Boby" let langnew="french" let newname=true; people.forEach((p)=>{ if(p.name===name1){ newname=false; if(!p.lang.includes(langnew)){ p.lang.push(langnew) } } }) if(newname===true){ let ar=[] ar.push(langnew); people.push({ id:people.length+1 ,name:name1,lang:ar}) } console.log("array",people)

about 4 years ago · Juan Pablo Isaza Relatório

0

puedes intentar algo como esto

básicamente, addData devuelve una nueva matriz cada vez, por lo que si necesita actualizar la existente, debe sobrescribir la variable de people

la idea es que esté usando el nombre como el campo que verifica para actualizar o insertar el registro, por lo que primero crea un objeto con el nombre como clave usando reducir y allí se ocupa de sus operaciones de combinación

Luego, se deshace de las claves usando Object.values y ordena la matriz según las claves

 let people = [ {id:1, name:"Bob", lang:['English']}, {id:2, name:"Sally", lang:['German','Hebrew']}, {id:3, name:"Trish", lang:['English']}, ] const addData = (data, name, lang) => Object.values(data.reduce((res, {id, name, lang}) => { return { ...res, [name]: { ...(res[name] || {}), id, name, lang: [...new Set([...lang, ...(res[name] || {lang: []}).lang])] } } }, {[name]: {id: data.length + 1, name, lang: [lang]}})).sort((a, b) => a.id - b.id) console.log(addData(people, 'Yuri', 'Italian')) console.log(addData(people, 'Bob', 'Italian'))

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