Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

82
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!