Tengo un objeto de JavaScript que se parece a esto:
var myTextOptions = {
'cartoon': {
comic: 'Calvin & Hobbes',
published: '1993'
},
'character names': {
kid: 'Calvin',
tiger: 'Hobbes'
}
}
Puedo acceder a las propiedades de cartoon
uso fácil myTextOptions.cartoon.comic
o lo que sea. Sin embargo, no he podido obtener la sintaxis correcta para acceder kid
. Intenté lo siguiente sin suerte:
myTextOptions.character names.kid
myTextOptions."character names".kid
myTextOptions.character\ names.kid
myTextOptions.'character names'.kid
myTextOptions.["character names"].kid
myTextOptions.character%20names.kid
javascript
object
julio
fuente
fuente
Respuestas:
Utilice ECMAscripts "notación entre corchetes":
Puede usar esa notación de cualquier manera, leyendo y escribiendo.
Para obtener más información, lea aquí:
fuente
myTextOptions.["character names"].kid
; para completar esta pregunta, me preguntaba por qué no funcionó.dot notation
simultáneamente. Solo debe haber una directiva de acceso.También se puede acceder a las propiedades de los objetos JavaScript o establecerlas mediante una notación entre corchetes (para obtener más detalles, consulte los descriptores de acceso a las propiedades ). Los objetos a veces se denominan matrices asociativas ya que cada propiedad está asociada con un valor de cadena que se puede usar para acceder a ella. Entonces, por ejemplo, podría acceder a las propiedades del objeto myCar de la siguiente manera:
Para obtener más información, siga leyendo en Trabajar con objetos JS .
Entonces en tu caso es
myTextOptions['character names'].kid;
fuente
También podemos hacer esto:
myTextOptions[ 'character names' ]['kid']
;Esto es útil cuando tenemos claves consecutivas que constan de espacio.
fuente
Permítanme compartir mi solución aquí. Estoy usando VueJs con script de tipo.
Tengo el siguiente json para analizar y mostrar en la interfaz de usuario
He creado el siguiente modelo que interfiere en TypeScript
He llamado a la API como:
Usado en JSX como:
Lo mismo también puede funcionar en React y Angular.
fuente
usa este código
myTextOptions.["character names"]["kid"];
fuente