2013-02-10 76 views
17

好了,所以讓我們說,我有我的目標獲取JS對象的元素與索引

myobj = {"A":["B"], "B":["C"]} 

,我希望得到的第一個元素出來。正如我希望它返回B其索引A。我該如何做一些沿着myobj[0]的行,並走出B.

+0

你不能,可靠;不保證存儲在對象中的屬性的順序。 – 2013-02-10 20:57:20

+1

你能構建一個不含糊的例子嗎?哪個'B'在這裏很重要? – Eric 2013-02-10 20:59:20

回答

14

JS對象沒有定義的順序,他們是(定義)未排序的鍵值對集。

如果 「第一次」 你的意思是 「先在字典序」,就可以使用,無論:

var sortedKeys = Object.keys(myobj).sort(); 

,然後使用:

var first = myobj[sortedKeys[0]]; 
+1

呃...詞彙是什麼意思哈哈? – ChapmIndustries 2013-02-10 20:58:32

+1

@ChapmIndustries詞法類似於字母,儘管在小寫之前默認採用大寫字母,因爲它只是查看每個字符的ASCII值。 – Alnitak 2013-02-10 20:59:00

+0

「lexical」應該是「lexicographic」 – Barmar 2016-01-29 22:28:39

-2
myobj.A 

------ - 或----------

myobj['A'] 

會讓你'B'

+4

但是OP的觀點是屬性名稱'A'不知道。 – 2013-02-10 21:00:11

-2

如果你想要一個特定的順序,那麼你必須使用一個數組,而不是一個對象。對象沒有定義的順序。

例如,使用陣列,則可以這樣做:

var myobj = [{"A":["B"]}, {"B": ["C"]}]; 
var firstItem = myobj[0]; 

然後,可以使用MyObj中[0]以獲得陣列中的第一個對象。

,或者根據你想要做什麼:

var myobj = [{key: "A", val:["B"]}, {key: "B", val:["C"]}]; 
var firstKey = myobj[0].key; // "A" 
var firstValue = myobj[0].val; // "["B"] 
34

我知道這是一個遲到的回答,但我認爲這是什麼OP要求。

myobj[Object.keys(myobj)[0]]; 
+0

「屬性的排序與通過手動循環對象的屬性給出的排序相同。」如[鏈接]所示(https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/keys) – 2016-11-22 22:02:27

+1

對於任何想要使用此功能的人,請記住並非全部瀏覽器支持Object.keys。看到這裏 - http://kangax.github.io/compat-table/es5/#test-Object.keys。 MDN還爲此提供了一個ployfill - https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/keys。 – jeanfrg 2017-05-19 10:57:34

0
var myobj = {"A":["B"], "B":["C"]}; 

var keysArray = Object.keys(myobj); 

var valuesArray = Object.keys(myobj).map(function(k) { 

    return String(myobj[k]); 

}); 

var mydata = valuesArray[keysArray.indexOf("A")]; // B 
-1

我希望這將有助於

$.each(myobj, function(index, value) { 

    console.log(myobj[index]); 

    )}; 
+0

您切換了右括號和大括號! – Syraxis 2017-07-12 15:36:19