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

172
Views
Cómo eliminar elementos del objeto de matrices

Uso un objeto de matrices y quiero eliminar un valor específico en 1 de las matrices.

 let medici= ["Person1","Person2", "Person3", "Person4", "Person5", "Person6" ]; let giorni = ["Lun", "Mar", "Mer","Gio","Ven"]; let presenti ={}; for (let giorno of giorni){ presenti[giorno] = medici; }

Yo obtengo:

 Gio: ["Person1", "Person2", "Person3", "Person4", "Person5", "Person6"], Lun: ["Person1", "Person2", "Person3", "Person4", "Person5", "Person6"], Mar: ["Person1", "Person2", "Person3", "Person4", "Person5", "Person6"], Mer: ["Person1", "Person2", "Person3", "Person4", "Person5", "Person6"], Ven: ["Person1", "Person2", "Person3", "Person4", "Person5", "Person6"]

Ahora quiero eliminar un valor específico en una matriz específica:

 giorno="Ven"; nome="Person1"; presenti[giorno].splice(presenti[giorno].indexOf(nome), 1);

¡Elimina el valor en todas las matrices! No solo en el "Ven" ... ¿Cómo puedo eliminar un solo elemento en una matriz específica que no afecte a las otras matrices del objeto?

Gracias

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

 const medici = ["Person1","Person2", "Person3", "Person4", "Person5", "Person6" ]; const gironi = ["Lun", "Mar", "Mer","Gio","Ven"]; const presenti = {}; for (const giorno of gironi) { presenti[giorno] = [...medici]; } presenti["Ven"].splice(presenti["Ven"].indexOf("Person1"), 1); console.log(presenti);

Su problema tiene que ver con la referencia de memoria, cuando iguala dos variables, no está creando otro objeto idéntico, sino copiando la referencia del objeto de una variable a otra, por lo que si modifica X , cambia Y , para corregir puede crear otro Array usando el operador de propagación [...medici]

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax

about 4 years ago · Juan Pablo Isaza Report

0

Cuando construye su objeto, todas las matrices tienen la misma referencia, por lo que deberá slice los medici en cada valor de objeto. Eche un vistazo a Copiar matriz por valor

Ahora puedes usar el método.

 let medici= ["Person1","Person2", "Person3", "Person4", "Person5", "Person6" ]; let giorni = ["Lun", "Mar", "Mer","Gio","Ven"]; let presenti ={}; for (let giorno of giorni){ presenti[giorno] = medici.slice(); } let giorno="Ven"; let nome="Person1"; presenti[giorno].splice(presenti[giorno].indexOf(nome), 1); console.log(presenti)

about 4 years ago · Juan Pablo Isaza Report

0

 let medici= ["Person1","Person2", "Person3", "Person4", "Person5", "Person6" ]; let giorni = ["Lun", "Mar", "Mer","Gio","Ven"]; let presenti ={}; for (let giorno of giorni){ presenti[giorno] = medici; } giorno="Ven"; nome="Person1"; const filteredData = presenti[giorno].filter((p)=>p!==nome) presenti[giorno] = filteredData console.log(presenti)

Lo hace porque en JavaScript Array y Objects se conocen como tipos de referencia. [Aprende más aquí]. 1

Para solucionar tu problema puedes hacer esto:

giorno="Ven";

nome="Person1";

Al principio, filtre Person1 de la matriz. const filteredData = presenti[giorno].filter((p)=>p!==nome)

Luego reemplace el objeto Ven con los datos filteredData actualizados

presenti[giorno] = filteredData

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!