Necesito tu ayuda. En localStorage tengo el objeto del ejemplo. Estoy usando Angular. Necesito extraer el valor de la primera clave de linkedinMail . Intenté hacerlo de varias maneras, pero como resultado en la consola, obtengo la primera llave {
Objeto de localStorage
{"linkedinMail": "mail.com", "password": "123"}
La primera opción:
public linkedinEmailBody: any const emailLoginLinkedin = localStorage.getItem('credsForJetLeadBE') let [key, value] = Object.entries(emailLoginLinkedin)[0]; this.linkedinEmailBody = value; console.log(this.linkedinEmailBody) // result: `{`La segunda opción:
public linkedinEmailBody: any const emailLoginLinkedin = localStorage.getItem('credsForJetLeadBE') const valueEmailLinkedin = Object.values(emailLoginLinkedin)[0]; this.linkedinEmailBody = valueEmailLinkedin console.log(this.linkedinEmailBody) // result: `{`La tercera opción
public linkedinEmailBody: any const emailLoginLinkedin = localStorage.getItem('credsForJetLeadBE') const valueEmailLinkedin = emailLoginLinkedin[Object.keys(emailLoginLinkedin)[0]]; this.linkedinEmailBody = valueEmailLinkedin console.log(this.linkedinEmailBody) // result: `{` Cuando uso JS estándar, el valor del campo linkedinMail me sale bien, en lugar de { . ¿Qué estoy haciendo mal? Muchísimas gracias
LocalStorage, sessionStorage almacena cadenas. Para cambiarlo a su tipo original, debe analizarlo así:
const emailLoginLinkedin = JSON.parse(localStorage.getItem('credsForJetLeadBE'));
Después de eso, puede usar cualquier forma que desee para recuperar el primer par clave, valor.
El almacenamiento local almacena el valor como una cadena, por lo que debe usar
JSON.parse(localStorage.getItem('credsForJetLeadBE'))para obtener el objeto real.
Esto debería funcionar.
const emailLoginLinkedin = JSON.parse( // (1) localStorage.getItem("credsForJetLeadBE") ); let [key, value] = Object.entries(emailLoginLinkedin)[0]; let linkedinEmailBody = value; console.log(linkedinEmailBody);En el almacenamiento local, tiene una cadena JSON que contiene el objeto que está almacenando.
Para que JavaScript pueda trabajar con él como un objeto, debe llamar a JSON.parse() en él.
Te daré un ejemplo completo, porque no solo podrías tener un problema en el GET, sino en el SET .
No voy a usar la "manera fácil" , para que entiendas mejor, y luego (cuando funcione bien), puedes ir a donde quieras complicado ( desestructuración , ...).
// Initial Declaration interface IEmailLoginLinkedin = { linkedinMail: string; password: string; } emailLoginLinkedin: IEmailLoginLinkedin; // Initialize this.emailLoginLinkedin = { linkedinMail: 'mail.com',password: '123' }; // Set value this.setEmailLoginLinkedin(this.emailLoginLinkedin); // Get values const emailLoginLinkedinObject: IEmailLoginLinkedin|null = this.getEmailLoginLinkedin(); let linkedinMail: string; let password: string; if (emailLoginLinkedinObject) { linkedinMail= emailLoginLinkedinObject.linkedinMail; password = emailLoginLinkedinObject.password; // Or the same but with 'destructuring':({linkedinMail, password}) = emailLoginLinkedinObject; } else { console.log('emailLoginLinkedin not set in the localStorage'); }Y los métodos para el acceso al localStorage:
// Serialize and STORE the emailLoginLinkedin in localstore: setEmailLoginLinkedin(emailLoginLinkedin: IEmailLoginLinkedin){ const emailLoginLinkedinString:string = JSON.stringify( emailLoginLinkedin ); localStorage.setItem('emailLoginLinkedin', emailLoginLinkedinString); } ---- // READ the emailLoginLinkedin from localstorage and Deserialize getEmailLoginLinkedin(): IEmailLoginLinkedin|null { const emailLoginLinkedinString:string|null = localStorage.getItem('emailLoginLinkedin'); if( emailLoginLinkedinString ){ return JSON.parse(emailLoginLinkedinString); } else { return null; } }