在每个循环中分配数组值

Assign array values in each loop

我正在尝试使用 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 状态:"received"

1:对象 条形码:“789” 数量:“3” 尺码:15 状态:"received"

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

您可以使用 extend() 和一个空对象来克隆单元对象,这样每个数组就不会引用同一个实例:

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

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