在javascript数组中添加新的键值而不影响

时间:2016-05-19 13:02:19

标签: javascript arrays

我有array这样,

var serialize={};

现在,我有表单,我正在序列化该表单并将其添加到数组中的serialize

var c=12;
ser[c]=$(elem).find('input[name!=material_id],select').serializeArray();

生成这样的数组,

ser[127][0][name]   quantity_1_127
ser[127][0][value]  100
ser[127][1][name]   single_1_127
ser[127][1][value]  11
ser[127][2][name]   double_1_127
ser[127][2][value]  17.5

现在我只想插入新的键和值,我就是这样做的

ser[c]['test']='test';

但这并没有影响。这是什么原因?我在这做错什么吗?任何替代解决方案?

1 个答案:

答案 0 :(得分:1)

那是因为ser[c]是一个数组而你正在尝试将它用作对象。

使用以下内容添加该测试/测试内容:

ser[c].push({'test': 'test'});

或者,当您设置对象中的其他值时:

ser[c].push({ 'name': 'test', 'value': 'test'});

这不是PHP,其中关联数组中的索引可以是字符串或整数。这是javascript,其中,如果对象中的索引是整数,那么该对象是一个数组,如果你的索引是字符串,那么你的对象就是......好吧,对象。

所以,如果你想要像ser[c]['mykey'] = value这样的东西,你必须做类似的事情:

ser[c] = { 'mykey': 'value'};

但这意味着ser[127][0]类型的元素将消失。