Estoy tratando de deconstruir este objeto para obtener "franco suizo", asumiendo que no conozco la clave CHF.
currencies = {CHF: {name: "Swiss franc", symbol: "Fr."}}Mis intentos:
Object.values(Object.values(currencies)[0] // -> Swiss franc,Fr. Object.values(Object.values(currencies)[0].name // -> S,w,i,s,s, ,f,r,a,n,c // why does it split the string?? not retrieve the value based on key name?? // i know how to join the strings back, but i'm confused why is this result?)solo una pequeña modificación a tu código:
const currencies = {CHF: {name: "Swiss franc", symbol: "Fr."}} console.log(Object.values(Object.values(currencies)[0])[0]) // OR Simply console.log(Object.values(currencies)[0].name)Object.entriesExplicación
El método Object.entries() devuelve una matriz de pares de propiedades enumerables [clave, valor] con clave de cadena enumerables de un objeto determinado. Esto es lo mismo que iterar con un bucle for...in, excepto que un bucle for...in también enumera las propiedades en la cadena del prototipo.
Ejemplo de trabajo
const currencies = { CHF: { name: "Swiss franc", symbol: "Fr.", }} console.log(Object.entries(currencies)[0][1].name);Código Explicación
Object.entries(currencies)La declaración anterior devuelve una matriz como la siguiente
[["CHF", {symbol: 'Fr.', name: 'Swiss franc'}]]Una matriz de combinación de pares de valores clave en el objeto.
Estamos interesados en el nodo cero de la matriz y el índice uno del primer nodo de la matriz.
Así será
Object.entries(currencies)[0][1].nameObject.values . Referencia.Explicación
El método Object.values() devuelve una matriz de valores de propiedad enumerables propios de un objeto determinado, en el mismo orden que el proporcionado por un bucle for...in. (La única diferencia es que un bucle for...in también enumera las propiedades en la cadena del prototipo).
Ejemplo de trabajo
const currencies = { CHF: { name: "Swiss franc", symbol: "Fr.", }} console.log(Object.values(currencies)[0].name);Código Explicación
Object.values(currencies)Empate por encima de la expresión devolverá la matriz de valores. Dado que solo tenemos una clave, la salida de la declaración anterior será
[{ symbol: 'Fr.', name: 'Swiss franc' }]Entonces el nodo requerido será
Object.values(currencies)[0].namecurrencies = {CHF: {name: "Swiss franc", symbol: "Fr."}}
Esto lo hará, Object.values(currencies)[0].name
Desglose :-
Object.values(currencies) da [{name: "Swiss franc", symbol: "Fr."}]
Object.values(currencies)[0] da {name: "Swiss franc", symbol: "Fr."}
Object.values(currencies)[0].name da franco suizo .