将数组推入另一个数组?

时间:2013-04-18 14:37:47

标签: javascript

我有一个数组:

var fileMetaData = [];

在循环中我想把东西推到数组中:

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

    fileMetaData.push(myTestArray);
});

测试myTestArray是:

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

问题是,当我得到数组的内容时,它只是一个逗号(,)。

我出错的任何想法?

4 个答案:

答案 0 :(得分:4)

那是因为你混淆了数组和对象(你应该使用它)。

如果您的密钥为'a''b',请使用

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

如果您真的想使用数组,请使用

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

您只看到一个逗号,因为数组的标准表示不会查找属性,因此您打印的是[[],[]].toString()的等效","

答案 1 :(得分:1)

数组使用数字键。你用过“a”和“b”。

初始化如下:

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

或者,使用它来保持代码几乎相同:

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

答案 2 :(得分:0)

当您为myTestArray['a']myTestArray['b']分配值时,您不会将它们推入数组,而是将值分配给对象的属性。要将项目视为数组中的值,您需要使用整数索引,或只需push

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

但是另一部分,你正在推进fileMetaData数组 - 如果你试图从myTestArray推送两个项目,你需要做的不同 - 如果你推一个数组到另一个数组,你正在推动数组,而不是项目。您需要一次循环访问一个并按这种方式推送它们,或者使用concat之类的东西来合并数组。

答案 3 :(得分:0)

这应该有效

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

    fileMetaData.push(myTestArray[0],myTestArray[1]);

});

1维数组 http://jsfiddle.net/Gs6ZU/

二维数组 http://jsfiddle.net/fY9S5/1/