我有一个列表,我从axios调用中得到,我尝试的是创建一个数组,其中具有相同id的产品,增加该产品的金额和小计,否则它们将按原样添加金额。
但我总是得到数量=1.xx和一个错误的总数,我不明白为什么或哪里可以出现故障
let dataGroup = [];
resp.data.forEach((element)=>{
let indexElement = dataGroup.findIndex(elm => {
return (elm.product_id === element.product_id ) && element.print;
});
if(indexElement !== -1){
dataGroup[indexElement].total += parseFloat(element.total);
dataGroup[indexElement].count += parseInt(element.count);
roundNumber(dataGroup[indexElement].count,0);
roundNumber(dataGroup[indexElement].total,2);
}
else{
dataGroup.push(element);
}
});
功能
window.roundNumber = function(num, scale) {
if(!("" + num).includes("e")) {
return +(Math.round(num + "e+" + scale) + "e-" + scale);
} else {
var arr = ("" + num).split("e");
var sig = ""
if(+arr[1] + scale > 0) {
sig = "+";
}
return +(Math.round(+arr[0] + "e" + sig + (+arr[1] + scale)) + "e-" + scale);
}
}
第一个实例中的数据组是空的,所有操作都是根据我用axios调用时收到的数据进行的,例如在图像中第一行我必须得到9的数量,但我收到的是1.00,单位值是35,在ST中应该是9*53,但不是这样
[
{
"id": 4,
"product_id": 1,
"count": "1.00",
"total": "35.00",
"print": 1
},
{
"id": 5,
"product_id": 1,
"count": "1.00",
"total": "35.00",
"print": 1
},
{
"id": 6,
"product_id": 1,
"count": "1.00",
"total": "35.00",
"print": 1
}
....