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

73
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 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