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