我有一个数组:
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 :(得分: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]);
});