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';

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

有什么想法我哪里出错了吗?

4

4 回答 4

4

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

如果您的键是'a'and 'b',请使用

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

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

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

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

于 2013-04-18T14:40:12.420 回答
1

数组使用数字键。您已经使用了“a”和“b”。

像这样初始化它:

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

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

var myTestArray = new Array(2);
myTestArray[0] = 'foo';
myTestArray[1] = 'bar';
于 2013-04-18T14:40:29.117 回答
0

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

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

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

于 2013-04-18T14:40:55.317 回答
0

这应该工作

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

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

});

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

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

于 2013-04-18T14:44:01.627 回答