【问题标题】:Calculations inside of loop and how to return sum of values . Vuejs循环内的计算以及如何返回值的总和。 Vuejs
【发布时间】:2018-12-20 22:21:53
【问题描述】:

我是 javascript 的初学者,需要引导我正确地在我的任务中使用它。

我有一个基于 php 开发的大型金融工具,我需要构建复杂的金融计算器,以反应性显示所有内容。我需要帮助来弄清楚如何在循环内使用许多 if 语句进行复杂计算,然后对数组中每个对象的输出值求和并返回总和值。为此使用 Vuejs。

所以我的cashDividends() 必须是循环中每个对象的计算值的总和。

下面我放了一段代码来理解我面临的问题。

 new Vue({
    el: "#waterfall",
    data() {
        return {
        info: {
            cash_dividends: true,
            converted_liabilities: true,
        },
        equities: [
            @foreach($preferredEquities as $equity)
            { name: '{{ $equity->name }}', id: {{ $equity->id }} },
            @endforeach
            ]
        }
    },
    computed: {
        remainingExit () {
            return this.form.exit_value - this.form.uncovered_debt - this.form.transaction_fees
        },
        cashDividends() {
    //I supposed should be something like this.     
          this.equities.forEach(function(equity)
          {
            //Here I make a lot of calculations with bunch of if statements using object and DOM input values. for each object 

          }
          // And here I need to return sum of calculated values from each object (equity) in array 
        }
    },

任何提示,伙计们,只需要弄清楚这个概念。

【问题讨论】:

  • 忘掉 Vue。用普通的旧 JavaScript 来做。创建一个接收数据并输出总和的函数。一旦你的计算正确。然后使用Vue来显示结果。

标签: javascript laravel vue.js


【解决方案1】:

听起来你应该使用reduce

const total = this.equities.reduce((sum, equity) => {
  const myEquityCalc = << something >>;
  return sum + myEquityCalc;
}, 0)

演示:

const equities = [{value: 100}, {value: 200}];

const total = equities.reduce((sum, equity) => {
  return sum + equity.value;
}, 0)

console.log(total)

【讨论】:

  • 好的,谢谢回复,我准备用它做个测试。
  • 有未定义的输出
  • 可能是您计算中的问题 - 我添加了一个演示来帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多