首先,我在数组中添加了两个相同的行,后来我只需要修改最后一个,向其中添加新属性。我这样做的方式:

for(var index in arrayOne) {
   var arrayOneItem = arrayOne[index];
   var new_row = {
      address: arrayOne[index].address,
      date: arrayOne[index].date,
      category: arrayOne[index].category,
   };
   rows.push(new_row);
   if(arrayOne[index].refund_status == 'refunded') {
      rows.push(new_row);
      rows[rows.length - 1].refund_status = 'refunded';
   }
}


但是问题在于if语句中的代码不仅会修改最后一行,而且还会修改之前的一行,因此refund_status = 'refunded'会同时添加到最后一行和最后一行之前。为什么会发生这种情况,有没有办法只修改最后一行?

最佳答案

当您两次使用同一对象时,最好使用Object.assign()创建一个副本(在这种情况下为浅)。在这种情况下,这将避免从多个变量或数组索引中引用同一对象。

例如。
rows.push(new_row);

变成

rows.push(Object.assign({}, new_row));

关于javascript - 在数组中添加两个相同的行,而不是只修改其中之一,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56832213/

10-11 12:49