Eu tenho um objeto JavaScript que se parece com isto:
var myTextOptions = {
'cartoon': {
comic: 'Calvin & Hobbes',
published: '1993'
},
'character names': {
kid: 'Calvin',
tiger: 'Hobbes'
}
}
Posso acessar as propriedades de cartoon
usar facilmente myTextOptions.cartoon.comic
ou o que quer. No entanto, não consegui obter a sintaxe correta para acessar kid
. Tentei o seguinte sem sorte:
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
fonte
fonte
Respostas:
Use ECMAscripts "notação de colchetes":
Você pode usar essa notação de qualquer maneira, lendo e escrevendo.
Para mais informações, leia aqui:
fonte
myTextOptions.["character names"].kid
- para completar esta pergunta, eu queria saber por que não funcionou?dot notation
simultaneamente. Deve haver apenas uma diretiva de acessador.Propriedades de objetos JavaScript também podem ser acessadas ou definidas usando uma notação de colchetes (para obter mais detalhes, consulte acessadores de propriedade ). Os objetos às vezes são chamados de matrizes associativas, pois cada propriedade está associada a um valor de string que pode ser usado para acessá-la. Assim, por exemplo, você pode acessar as propriedades do objeto myCar da seguinte maneira:
Para mais informações, continue lendo em Working with JS Objects .
Então, no seu caso é
myTextOptions['character names'].kid;
fonte
Também podemos fazer isso -
myTextOptions[ 'character names' ]['kid']
;Isso é útil quando temos chaves consecutivas que consistem em espaço.
fonte
Deixe-me compartilhar minha solução aqui, estou usando VueJs com script de tipo.
Eu comecei a seguir json para analisar e exibir na IU
Eu criei o seguinte modelo que interfere no Typescript
Eu chamei a API como:
Usado em JSX como:
O mesmo também pode funcionar em React e Angular.
fonte
use este código
myTextOptions.["character names"]["kid"];
fonte