2016-01-27 86 views
1

我想知道如果我有JavaScript中的密鑰,我將如何獲得下一個JSON項目。例如,如果我提供關鍵'Josh',我將如何獲得'Annie'以及關鍵'Annie'的內容?我會不得不在數組中處理JSON並從中提取?如何獲取下一個JSON項目

此外,我認爲有一個適當的術語來將數據從一種類型轉換爲另一種類型。任何人都知道它是什麼......它只是在我的舌頭!

{ 
    "friends": { 
     "Charlie": { 
      "gender": "female", 
      "age": "28" 
     }, 
     "Josh": { 
      "gender": "male", 
      "age": "22" 
     }, 
     "Annie": { 
      "gender": "female", 
      "age": "24" 
     } 
    } 
} 
+3

這是不可能的,JSON對象中的屬性沒有順序。 –

+0

@ leo.fcx,這有什麼不同? OP不關心訂單! – Rayon

+3

「我認爲有一個適當的術語來將數據從一種類型轉換爲另一種類型。」這被稱爲類型轉換或[類型轉換](https://en.wikipedia.org/wiki/Type_conversion) –

回答

6

在JavaScript對象屬性的順序,不能保證(ECMAScript Third Edition (pdf):

4.3.3對象的對象是對象的類型的成員。它是一個無序的屬性集合,每個屬性都包含一個原始的值,對象或函數 。存儲在 對象的屬性中的函數稱爲方法。

如果訂單沒有得到保證你可以做到以下幾點:

var t = { 
    "friends": { 
     "Charlie": { 
      "gender": "female", 
      "age": "28" 
     }, 
     "Josh": { 
      "gender": "male", 
      "age": "22" 
     }, 
     "Annie": { 
      "gender": "female", 
      "age": "24" 
     } 
    } 
}; 

// Get all the keys in the object 
var keys = Object.keys(t.friends); 

// Get the index of the key Josh 
var index = keys.indexOf("Josh"); 

// Get the details of the next person 
var nextPersonName = keys[index+1]; 
var nextPerson = t.friends[nextPersonName]; 

如果順序問題,我會建議有另一個數組來保存名稱["Charlie", "Josh", "Annie"]的順序,而不是使用Object.keys()

var t = ...; 

// Hard code value of keys to make sure the order says the same 
var keys = ["Charlie", "Josh", "Annie"]; 

// Get the index of the key Josh 
var index = keys.indexOf("Josh"); 

// Get the details of the next person 
var nextPersonName = keys[index+1]; 
var nextPerson = t.friends[nextPersonName]; 
+0

是否有可能獲得下一個朋友的關鍵價值?所以在你的例子中,我也想得到'Annie'的價值。 – Jon

+0

啊,將訂單存儲在數組中的絕妙技巧。這正是我需要的。謝謝! – Jon

+0

@Jon,我更新了這個例子,以反映出下一個人的名字 – Steven10172

相關問題