2015-07-03 2 views
-2

я в настоящее время извлечения данных из массива JSON, который выглядит следующимномер в качестве идентификатора

"title": Title, 
    "chapters": { 
     "13c": { 
      "words": 123, 
      "spaces": 321 
     }, 
     "15d": { 
      "words": 123, 
      "spaces": 321 
     }, 
     "38h": { 
      "words": 123, 
      "spaces": 321 
     } 
    } 

Дело в том, когда я пытаюсь выбрать 13с (если она существует) со следующим

if(book.chapters.13c){ 
    console.log(book.chapters.13c); 
} 

я получаю следующее сообщение об ошибке:

Uncaught SyntaxError: Unexpected token ILLEGAL 
+1

имя переменной не должно быть начато с номером. поэтому его ошибка. –

+0

Есть ли способ обойти это? – user2536680

+1

c13 будет действительным именем переменной –

ответ

2

для каждой ситуации вы окажетесь не в состоянии использовать . синтаксиса, используйте [] синтаксис вместо:

console.log(book.chapters['13c']); 

Обратите внимание, что синтаксис [] и . синтаксиса эквивалентны, но синтаксис [] является более гибким, поскольку он не имеет какие-либо ограничений на ключе атрибута. Например, если ключевое свойство содержит пробелы:

book.chapters['hello world']; 

если потребности ключевых вашей собственности должны быть построены из переменных:

book.chapters[somevar + '-' + someothervar]; 

т.д.

В JavaScript foo.bar просто сокращенная для foo['bar'] ,

1

Вы можете сделать:

if(book.chapters["13c"]) ... 

Это функционально эквивалентно тому, что вы хотите. Обычно вы не должны использовать Numbers в начале идентификатора, но он действителен. Поскольку он анализируется как строка, это то же самое.

Это эквивалентно созданию объекта следующим образом:

{ 
    "0":true, 
    "1":"testing", 
    "2":"yup", 
    "length": 3 
}