2013-04-18 137 views
0

我有一個數組:將數組推入另一個數組?

var fileMetaData = []; 

在循環中我要推的東西數組:

$('#gallery-manager-add-form .galleryImage').each(function(){ 

    fileMetaData.push(myTestArray); 
}); 

爲了測試myTestArray是:

var myTestArray = new Array(2); 
myTestArray['a'] = 'foo'; 
myTestArray['b'] = 'bar'; 

的問題是,當我得到數組的內容,它只是一個逗號(,)。

任何想法我錯了嗎?

+0

我已經把2的jsfiddle演示了起來,其中一人將是你是什麼 – dt192

+0

後......但正如'dystroy'指出的,你應該使用Objects not Arrays。 –

回答

4

這是因爲你在混淆數組和對象(你應該使用它)。

如果你的鑰匙是'a''b',使用

var myTestArray = {}; 
myTestArray['a'] = 'foo'; 
myTestArray['b'] = 'bar'; 

如果你真的想用一個數組,使用

var myTestArray = []; 
myTestArray.push('foo'); // no explicit key 
myTestArray.push('bar'); 

你看到只是一個逗號,因爲數組的標準表示不尋找屬性,所以你打印相當於[[],[]].toString()這是","

1

數組使用數字鍵。你用過「a」和「b」。

初始化這樣的:

var myTestArray = ['foo', 'bar']; 

或者,用它來保持你的代碼幾乎相同:

var myTestArray = new Array(2); 
myTestArray[0] = 'foo'; 
myTestArray[1] = 'bar'; 
0

當你到myTestArray['a']myTestArray['b']分配值,你不將它們推入數組中,而是將值分配給對象的屬性。爲了把項目作爲一個數組的值,你需要使用整數索引,或者只是push他們:

myTestArray[0] = 'foo'; 
myTestArray.push('bar'); 

但另一部分,在那裏你推入fileMetaData陣列 - 如果你」重新嘗試從myTestArray推出這兩個項目,你需要做的不同 - 如果你推入一個數組到另一個,你推動數組,而不是項目。您需要一次循環一次,並按照這種方式推送,或者使用類似concat的東西來合併數組。