2012-03-02 34 views
0

我有一個數組和一個對象。在另一個陣列中嵌套對象

var myObj = { "abc": 200, "xyz": 300}; 
vay myArray = ["one", "two"] 

我想接下來myObj的值在「one」之內。

所以myArray的[0]會返回對象數據 -

的執行console.log(myarray的)會看起來像。

-"one" 
    *Object 
      *abc:200 
      *xyz:300 
-"two" 

我嘗試使用push將myObj添加到myArray [0],但它沒有奏效。 任何建議。

更新:
我的代碼看起來現在這個樣子,也許這會幫助我正確地問:

var allData = { 
user1:[userData]} 

這每一個函數被調用時運行。

userData第一次是例如:{name:bob, id:123}{name:dave, id:456}函數第二次運行。

但如果我做了console.log{allData),我只能看到最後的userDat對象。我想這是每一個我使用功能的時間添加到用戶1,這樣我基本上可以做到以下allData.user1[1].name;並獲得「戴夫」

+1

你的請求是不可能的,因爲它沒有任何意義。您在鍵和值之間混淆了:對象具有鍵(或索引)和相應的值。數組完全相同,其中元素(即值)僅由*整數*類型的鍵索引。所以在你最初的例子中,「one」是一個值,但你希望它是一個關鍵。因此,您的要求沒有意義。 – davin 2012-03-02 04:39:37

+0

增加了我的問題的更多細節,看看是否有幫助。我不知道這是否讓事情更清楚 – Gabriel 2012-03-02 05:12:27

回答

0

下面的結構是你彷彿要詢問:

var myArray = [ 
       { "one" : { "abc": 200, "xyz": 300} }, 
       "two" 
       ]; 

也就是說,數組中的第一個元素成爲具有一個名爲「one」的屬性的對象,並且該屬性引用對象{ "abc": 200, "xyz": 300}。數組中的第二個元素仍然是一個字符串「two」。

要訪問「abc」屬性,您會說myArray[0]["one"]["abc"]myArray[0].one.abc。這看起來很笨重,也許根本就不是你想要的,但正如我所說,這是你似乎要求的。

如果雙方已經存在在你的問題出和對象和數組要使用數組元素0的當前值是在對象中的鍵,你可以這樣做:

var myObj = { "abc": 200, "xyz": 300}, 
    myArray = ["one", "two"]; 

var tempObj = {}; 
tempObj[myArray[0]] = myObj; 
myArray[0] = tempObj; 

似乎對我來說,一個更明智的結構將是:

var myObj = { 
     "one" : { "abc": 200, "xyz": 300 }, 
     "two" : null 
}; 

所以,你可以簡單地說myObj["one"]["abc"]myObj.one.abc

0

我假設你想成爲一個通用的方法(不與任何硬編碼值),在這種情況下,試試這個:

var myObj = { "abc": 200, "xyz": 300}; 
    var myArray = ["one", "two"]; 
    var one = myArray[0]; 
    var temp = {}; 
    temp[one] = myObj; 
    myArray[0] = temp; 
    console.log(myArray); 
0

[{ 「ABC」:200, 「XYZ」:300 } , 「二」] 或 [{ 「一個」:{ 「ABC」:200, 「XYZ」:300 }}, 「兩」] 你 myArray的[0]是一個字符串,它沒有推送方法