在每个循环中分配数组值

时间:2015-01-14 00:25:49

标签: javascript jquery arrays each

我正在尝试使用每个循环遍历输入字段,将其他表单数据添加到数组,然后将该输入值添加到数组中已有的表单数据。

它似乎基本上正常工作,但每次我设置输入时,它都会在数组中具有该名称的所有条目中设置该值。关于我的逻辑走向何方的任何想法?

$(this).next('tr').children('td').each(function () {
        input = $(this).children('input');
        units[i] = unit;
        units[i]['barcode'] = input.val();
        i++;
 });

输出对象:  对象{0:对象,1:对象} 0:对象 条形码:“789” 数量:“3” 大小:15 状态:“已收到”

1:对象 条形码:“789” 数量:“3” 大小:15 状态:“已收到”

input.val()在每个循环的每次迭代中都是不同的,它只是将最后一个值分配给所有条形码条目。

1 个答案:

答案 0 :(得分:0)

您可以将extend()与空对象一起使用来克隆单位对象,以便每个数组都不会引用同一个实例:

$(this).next('tr').children('td').each(function () {
        input = $(this).children('input');
        units[i] = $.extend({}, unit);
        units[i]['barcode'] = input.val();
        i++;
 });

现在这应该可以正常工作,每个对象都是唯一的,包括条形码。