2012-10-11 36 views
0

可能重複:
How to access a numeric property?如何用整數作爲關鍵字讀取對象?

我想讀一個對象,其中鍵是數字。但不幸的是,當我嘗試閱讀此對象時:

Salary:{ 
    "2012_08":"5555", 
    "2012_09":"6666", 
    "2012_10":"7777" 
} 
var augsalary = salary.2012_08; 

它會引發錯誤。我的問題是:「2012_08」是年份組合,不能更改爲以字符串形式存儲。我還能如何使用該密鑰訪問該值?

+2

_「2012_08」是年份組合,不能更改爲以字符串形式存儲._ - 它已經是字符串:數字中不能有下劃線,並且該值使用雙引號。 (這只是在對象屬性「點符號」中使用的有效標識符。) – nnnnnn

+1

順便說一句,你的問題與JSON無關,我相應地編輯了你的問題。 –

回答

3

首先,你的JavaScript代碼是無效的,也許你的意思是

var Salary = { 
    "2012_08":"5555", 
    "2012_09":"6666", 
    "2012_10":"7777" 
} 
var augsalary = salary.2012_08; 

其次,一個常見的混亂是談論JSON對象。 Salary不是JSON對象,它是一個JavaScript對象。 JSON是 的一種表示法,它將所有JavaScript對象的大部分子集表示爲字符串。這些字符串然後可以被傳輸到您的代碼或其他計算機的其他部分,在那裏它們可以轉換回對象進行處理。所以在你的問題Salary將是從收到的JSON字符串轉換的數據。

JS有數組和對象。

對象是最基本的,它們可以具有其名稱可以是任意字符串的屬性。提供了兩種形式的對象屬性訪問:大括號和點符號。括號符號是通用的,您可以在對象名稱後面的大括號內指定屬性名稱值作爲字符串或變量值。點符號是一種簡寫形式,只有當該屬性的名稱具有有效JS變量名稱的形式時纔可以使用。

數組是基本對象,它具有維護其數字屬性名稱的有序列表的附加功能。您可以將非數字屬性名稱添加到數組,但它們不參與任何數組函數。

所以在你的例子中,你沒有數字鍵或屬性名稱,因爲它們包含'_'字符。由於它們以數字開頭,因此不能使用點符號,並且必須使用大括號來訪問它們,如下面的dystroy所述。

希望我的小課能幫助你更好地理解基礎知識。

6

所有對象屬性都可以使用大括號表示來訪問。

使用

var augsalary = salary['2012_08']; 

請注意,如果你想把它當作一個整數(並且無法更改JSON發送號碼),你可以使用:

var augsalary = parseInt(salary['2012_08'], 10); 
相關問題