首页 > 解决方案 > 如何从循环中返回值。js, Vue.js

问题描述

抱歉,我是 JS 的初学者,我有一个基本问题,但我花了一整天试图在谷歌中找到答案,但我没有。

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

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

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

请检查是否有一分钟。谢谢!

     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 
        }
    },

标签: javascriptvue.jsvuejs2

解决方案


您可以使用可以在此处reduce了解更多信息的功能:

new Vue({
  el: "#app",
  data: {
    equities: [{
        name: "Serias A",
        price: 20
      },
      {
        name: "Serias B",
        price: 21
      },
    ]
  },
  computed: {
    cashDividends() {
      return this.equities.reduce(this.sum);
    }
  },
  methods: {
    sum(total, num) {

      return total.price + num.price
    }
  }
});
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.2.1/vue.min.js"></script>
<div id="app">
  {{cashDividends}}
</div>


推荐阅读