后端传的数组,传几条不固定,怎么求和?
data: [
{code: "320100", cumulativeElectric: 0, cumulativeProportion: 0, electric: 0, monthElectric: 0,…}
{code: "320200", cumulativeElectric: 0, cumulativeProportion: 0, electric: 0, monthElectric: 0,…}
{code: "320300", cumulativeElectric: 0, cumulativeProportion: 0, electric: 0, monthElectric: 0,…}
{code: "320400", cumulativeElectric: 0, cumulativeProportion: 0, electric: 0, monthElectric: 0,…}
{code: "320500", cumulativeElectric: 0, cumulativeProportion: 0, electric: 0, monthElectric: 0,…}
{code: "320600", cumulativeElectric: 0, cumulativeProportion: 0, electric: 0, monthElectric: 0,…}
{code: "320700", cumulativeElectric: 0, cumulativeProportion: 0, electric: 0, monthElectric: 0,…}
{code: "320800", cumulativeElectric: 0, cumulativeProportion: 0, electric: 0, monthElectric: 0,…}
{code: "320900", cumulativeElectric: 0, cumulativeProportion: 0, electric: 0, monthElectric: 0,…}
{code: "321000", cumulativeElectric: 0, cumulativeProportion: 0, electric: 0, monthElectric: 0,…}
{code: "321100", cumulativeElectric: 0, cumulativeProportion: 0, electric: 0, monthElectric: 0,…}
{code: "321200", cumulativeElectric: 0, cumulativeProportion: 0, electric: 0, monthElectric: 0,…}
{code: "321300", cumulativeElectric: 0, cumulativeProportion: 0, electric: 0, monthElectric: 0,…}
]
我现在的写法
selectElectricUpgrade({
area: this.areas,
month: this.time.format("YYYY-MM"),
}).then((res) => {
if (res.code === "0") {
const arr = {};
for (let i = 0; i < res.data.length; i++) {
arr.electric += res.data[i].electric;
arr.monthElectric += res.data[i].monthElectric;
arr.cumulativeElectric += res.data[i].cumulativeElectric;
}
const arr1 = Number(arr.cumulativeElectric) / Number(arr.monthElectric);
if (isNaN(arr1)) {
const arr1 = 0;
arr.cumulativeProportion = arr1.toFixed(2);
} else {
const arr1 = Number(arr) * 100;
arr.cumulativeProportion = arr1.toFixed(2);
console.log("", arr, arr1);
}
console.log(arr);
}
控制台打印的结果
arr.electric += res.data[i].electric-0;
arr.monthElectric += res.data[i].monthElectric-0;
arr.cumulativeElectric += res.data[i].cumulativeElectric-0;
field 值填字段名,填哪个就计算哪个
let field = 'cumulativeElectric'
let count = data.reduce((res, item) => {
res += item[field] || 0
return res
}, 0)
console.log('总和', count)
合计行不也要一条对象,把每个单独计算,放到一个对象渲染出来就好了啊
其实没怎么看懂题目,你是想条记录的所有值合计,还是说所有记录的每个属性合计。我看你代码怎么后面又除又乘的
还有你else那里的Number(arr)肯定有问题。。
res.data[i].electric;
res.data[i].monthElectric;
res.data[i].cumulativeElectric;
确保这三个不为空不为字符串类型
arr.monthElectric
确保这个不为空不为字符串类型不为0