2010-05-11 216 views
3

說我要開始一個空白的JavaScript對象:如何將JavaScript對象複製到另一個對象中?

me = {}; 

然後,我有一個數組:

me_arr = new Array(); 
me_arr['name'] = "Josh K"; 
me_arr['firstname'] = "Josh"; 

現在我想拋出一個數組對象,所以我可以用me.name來返回Josh K

我想:

for(var i in me_arr) 
{ 
    me.i = me_arr[i]; 
} 

但這並沒有期望的結果。這可能嗎?我的主要目標是將這個數組包裝在一個JavaScript對象中,這樣我就可以將它傳遞給一個PHP腳本(通過AJAX或其他)作爲JSON。

+0

所以所有這些示例代碼都在JS中,對不對?不是PHP?在這種情況下,php的json_encode不會幫助你。 – Tesserex 2010-05-11 15:33:06

+0

這裏的PHP標籤實際上並不重要。這只是一個視圖/模板技術。在一個PHP文件中寫JS代碼並遇到JS問題並不會使它成爲PHP問題:) – BalusC 2010-05-11 15:35:11

回答

6

由於屬性名稱是一個變量,以及,循環應該是這樣的:

for(var i in me_arr) 
{ 
    me[i] = me_arr[i]; 
} 

要了解更多關於JSON,你可能會發現this article有用。

0

在完成的陣列上使用json_encode()

0

首先,「me_arr」不應該是一個數組,因爲你實際上並沒有像它那樣使用它。

var me_arr = {}; 
me_arr.name = "Josh K"; 
me_arr.firstname = "Josh"; 

或者更短:

var me_arr = { "name": "Josh K", "firstname": "Josh" }; 

現在,你的循環幾乎是正確的:

for (var key in me_arr) { 
    if (me_arr.hasOwnProperty(key)) 
    me[key] = me_arr[key]; 
} 

我不知道該點是擺在首位有兩個變量是什麼, 但是無所謂。另外:請確保您使用var聲明變量!

1

在你的代碼,你一遍又一遍設置我。我財產。要做你在這裏描述的,試試這個:

for(var i in me_arr) 
{ 
    me[i] = me_arr[i]; 
} 
0

爲什麼你不只是做:

me['name'] = "Josh K"; 
me['firstname'] = "Josh"; 


這是一樣的

me.name = "Josh K"; 
me.firstname = "Josh"; 

閱讀這篇有趣的文章關於"associative arrays in JS"。真正克隆對象,而不必擔心引用

1

最簡單的方法是

var newObj = JSON.parse(JSON.stringify(oldObj)); 

很方便,但如果你在你的目標函數並不可行。

+1

如果你的對象中有函數,那麼你將會丟失它們,並帶有一串字符串 – Markive 2013-01-17 11:06:29

+0

不知道。編輯。 – Redsandro 2013-01-17 16:39:19

相關問題