首页 > 解决方案 > Javascript sum 动态 django rest 框架条目

问题描述

我正在开发一个应用程序,该应用程序允许用户根据他们的条目计算有关交易的信息。在页面已经检索到任何现有条目后,我一直无法根据添加的条目来正确计算交易金额。

<td scope="col">${sumTotal('amount')}</td>
<script>
    ...
        mounted() {
            this.trade_id = window.location.pathname.split("/")[3];
            // Get entries of trade
            axios
                .get('/trade/' + window.location.pathname.split("/")[3] + '/entries/')
                .then(response => (this.entries = response.data));
        },
    ...
        methods: {
            sumTotal(base) {
                return Math.round(this.entries.reduce((sum, cur) => sum + cur[base], 0));
            }
</script>

当页面第一次加载并提取现有条目时,第一个计算(第一列)是正确的 16。但是,当我添加一个新条目时,自动计算的值不再正确。

在此处输入图像描述

第一列应该是 26 但现在是 1610

在此处输入图像描述


我可以根据需要添加更多信息。我不确定需要多少,我不想把问题弄得乱七八糟。

标签: javascript

解决方案


这发生在JS方面,

这是因为您将数值与字符串值相加,结果将是两个值在新字符串中的连接。

如果你注意到

以前的总和是16,新值是10 它们的串联将是1610

解决方案就像将新值从字符串转换为数值一样简单

您应该将里面的行更改sumTotal为:

return Math.round(this.entries.reduce((sum, cur) => sum + parseInt(cur[base]), 0));

推荐阅读