【问题标题】:How to increment a variable when condition is true条件为真时如何增加变量
【发布时间】:2018-11-23 14:35:46
【问题描述】:

如果条件为真,我希望增加变量。

我有一个包含类似信息的对象

{id: 1, payment: pending}
{id: 2, payment: paid}

这是我到目前为止所做的:

var currentIndex = 0;
  $scope.unpaid = 0;
  $scope.paid = 0;

  const getSessions = () => {
    loginService.getUser().then((response) => {
      var user_id = response.data.id;
      console.log("getUser returning this => ", response.data);
      loginService.getUserSessions(user_id).then((response) => {
        var sessions = response.data;
        console.log(sessions);
        sessions.forEach(e => e.next_class = e.next_class.substring(0, 10));
        sessions.forEach(function (arrayItem) {
          if(arrayItem.payment === "Pending") {
            $scope.unpaid++;
          }else{
            $scope.paid++;
          };
      });
        $scope.new = sessions;
       Date($scope.class).toISOString().slice(0,10);
      })
    })
  };

  getSessions();

我可以使用for each 在对象中循环,但我想循环通过对象并检查payment 键。如果payment == pending 存储在unpaid 中,如果payment == paid 则存储在paid 中。

前端会以数字显示有多少未付费会话和付费会话,例如:

Unpaid 1

Paid 1

【问题讨论】:

    标签: javascript arrays angularjs object


    【解决方案1】:

    我假设对象在一个数组中,我还假设它被称为payments

    var paid = 0;
    var unpaid = 0;
    
    var payments = [{id: 1, payment: 'paid'}, {id: 2, payment: 'unpaid'}, {id: 3, payment: 'unpaid'}];
    
    for (var payment in payments) { // iterate through all payments
        if (payments[payment].payment == 'paid') { // if the person has paid
            paid++; // count a payment
        } else { // if the person hasn't paid
            unpaid++; // count a non-payment
        }
    }
    
    console.log("Paid: " + paid + ", Unpaid: " + unpaid);
    

    此外,您可能应该将payment 设为布尔值,并将其命名为paid,其中true 表示此人已付款,false 表示未付款。 如果您这样做,那么您可以将 if 条件更改为 if (payments[payment].paid) { ... }。好多了!

    【讨论】:

    • 编辑了我的示例,您可以运行该示例并让我知道它是否有意义!
    • 所以它确实有效,但由于某种原因,当我删除会话时,它仍然会增加未付费变量。应该减少
    • 如果您删除一个会话并希望更新有偿和无偿变量,您需要将它们重置为 0 并再次运行相同的过程。此代码不会自行更新。