pickerTableData(val) {
let rowData = [...this.rowData];
let tableData = rowData.filter((rowData) => {
if (
this.valueName != "" &&
this.startTime != "" &&
this.endTime != ""
) {
// 三值
return (
rowData.goodsName == this.valueName &&
rowData.saleTime >= this.startTime &&
rowData.saleTime <= this.endTime
);
} else if (
this.valueName != "" &&
this.startTime == "" &&
this.endTime == ""
) {
// 名字
return rowData.goodsName == val;
}
return (
// 时间
rowData.saleTime >= this.startTime && rowData.saleTime <= this.endTime
);
});
tableData.forEach((item) => {
const salesVolume = item.unitPrice * item.saleCount;
const profit = item.saleCount * (item.unitPrice - item.cost);
const cost = item.cost * item.saleCount;
item['salesVolume'] = salesVolume;
item['profit'] = profit;
item['cost'] = cost;
// ;
});
this.tableData = tableData;
this.setsaleEcharts();
},
为什么无论我怎么操作都会修改this.rowData的值,this.rowData是由vuex中的数据得来,是一个计算属性。但我这没有直接修改this.rowData的值,this.rowData是一个对象数组,出问题的是对象中的cost属性,第二次得到的cost是第一次cost的值。我每执行一次不应该是从最原始的this.rowData中拿数据吗,但我第二次拿的时候item.cost的值是第一次item['cost'] = cost;计算后的值,this.rowData的值已经被修改了!vuex中的原始数据也被修改了!