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

135
Views
Combinar objetos en javascript en uno

Mi problema es que tengo un objeto inicial con datos en la función. La función recibe parámetros con valores que están en este objeto inicial . Necesito actualizar el objeto inicial cada vez con los datos, que provienen de params .

El código:

 export function saveLocalStorage(params = {}) { let state = { firstName: '', lastName: '', role: '', idToken: '', auth: false, id: '', email: '', phone: '', organizationId: '', lastVisit: '', } localStorage.setItem('donisi-new', JSON.stringify(state)) }

los parámetros tienen los mismos nombres que los nombres en el objeto inicial , ejemplo:

 saveLocalStorage({ firstName, lastName, role, organizationId, auth: true, idToken, lastVisit: moment(new Date()), })

Entonces, por ejemplo, la primera vez que recibí el primer objeto con parámetros, por ejemplo:

 saveLocalStorage({ firstName: 'La La', lastName: 'Bla Bla' })

y la segunda vez que recibí un objeto con parámetros:

 saveLocalStorage({ role: 'admin', phone: '+111111111' })

¿Cómo actualizar el estado inicial y no eliminar los valores y solo actualizarlos ?

Gracias a todos.

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

0

Esta es una función que uso para fusionar 2 objetos de JavaScript:

 function mergeObjects(obj, src) { for (var key in src) { if (src.hasOwnProperty(key)) obj[key] = src[key]; } return obj; }

Así que si tuvieras estos 2 objetos:

 var obj1 = {name: 'Bob', age: 30}; var obj2 = {name: 'Steve'};

Y ejecutó la función:

 mergeObjects(obj1, obj2);

Volvería:

 {name: 'Steve', age: 30}
about 4 years ago · Juan Pablo Isaza Report

0

Para lograr este comportamiento, puede utilizar el operador de expansión (...) de ES6 para fusionar objetos. Combinará los dos objetos. Los nuevos campos se agregarán desde ambos objetos y los existentes se actualizarán.

Simplemente reemplace su

 localStorage.setItem('donisi-new', JSON.stringify(state))

con

 localStorage.setItem('donisi-new', JSON.stringify({...state, ...params}))

El orden de estado y parámetros es importante aquí. Este pedido significa que el objeto de estado se actualizará con nuevos valores que existen en el objeto de parámetros.

about 4 years ago · Juan Pablo Isaza Report

0

Parte del problema con la actualización del estado inicial es que tiene el state definido en la función, por lo que esos valores no se pueden actualizar. Una forma de abordar esto es extraer el state en su propio archivo y luego hacer referencia a él en su función.

 // state.js export default { firstName: '', lastName: '', role: '', idToken: '', auth: false, id: '', email: '', phone: '', organizationId: '', lastVisit: '', };

Luego, en su función, puede hacer referencia a ella y actualizarla según sea necesario. La próxima vez que llame a saveLocalStorage , el estado se habrá actualizado desde la llamada anterior.

 import * as state from "./state.js"; export function saveLocalStorage(params = {}) { /* Update state with values from params example for (const [key, value] of Object.entries(params)) { state[key] = value; } */ localStorage.setItem('donisi-new', JSON.stringify(state)) }

Dejo parte de esto en un comentario porque quizás tengas algo más en mente para actualizar el estado o antes de fusionarte.

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!