2015-07-03 96 views
-2

我目前從JSON數組,看起來像下面號碼作爲標識符

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

事情提取數據時,我儘量選擇13C(如果存在)具有以下

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 
}