【问题标题】:Iterating array for each item in javascript在javascript中为每个项目迭代数组
【发布时间】:2016-07-19 09:02:27
【问题描述】:

我有一个对象数组,我想循环一次。这是javascript的代码。

   data.projectModelList.sum = function (prop) {
           var total = 0;
           for (var i = 0, _len = this.length; i < _len; i++) {
              total += this[i][prop];
           }
           return total;
        }

        vm.dataTotal = [data.projectModelList.sum("budget"),
                        data.projectModelList.sum("tax"),
                        data.projectModelList.sum("money"),
                        data.projectModelList.sum("balance"),
                        data.projectModelList.sum("amount"),
                        data.projectModelList.sum("current"),
                        data.projectModelList.sum("after"),
                        data.projectModelList.sum("discount")]

当我循环时,我会得到预算、税收、金钱、余额、金额、当前、之后、折扣超过 1。我只想循环它,然后结果必须是每个项目显示一次而不是更多。我知道我需要在 for 循环中更改某些内容,但我不知道是什么。

亲切的问候

编辑:

模型项

  public class ProjectDashBoardModel
   {
      public decimal budget { get; set; }
      public decimal tax{ get; set; }
      public decimal money{ get; set; }
      public decimal balance{ get; set; }
      public decimal amount{ get; set; }
      public decimal current{ get; set; }
      public decimal after{ get; set; }
      public decimal discount{ get; set; }     
   }

   public class ProjectDashboard
   {
      public Guid Id { get; set; }
      public string ProjectLogo { get; set; }
      public string LastMutatedBy { get; set; }
      public DateTime LastMutatedDate { get; set; }
      public List<ProjectDashBoardModel> ProjectModelList { get; set; }


   }

【问题讨论】:

  • 请添加projectModelList的结构。
  • 模型项的结构
  • 它看起来不像 javascript。并且有不同的名称。
  • 我将 ProjectDashboardModel 放入 C# 端的列表服务器中。我通过 javascript 的数据服务获取数据。

标签: javascript c# arrays


【解决方案1】:

您可以更改您的 sum 函数以返回一个对象,其中 all 总和作为属性 - 这意味着您只需循环数组一次。

data.projectModelList.sum = function (props) {
       var total = {};
       for (var i = 0, _len = this.length; i < _len; i++) {
         for(var j=0;j<props.length;i++){
          var prop = props[j];
          if(total[prop] === undefined){
              total[prop] = 0;
          }
          total[prop] += this[i][prop];
         }
       }
       return total;
    }

你可以用一个包含所有你想要的属性的数组来调用它:

var sums = data.projectModelList.sum(['budget','tax','money']);

然后您将使用点或括号表示法读取总和

var budgetTotal = sums.budget;
var moneyTotal = sums['money'];

【讨论】:

    猜你喜欢
    • 2021-07-09
    • 2015-03-10
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 2020-08-24
    • 2021-12-13
    • 2018-01-29
    • 2011-07-07
    相关资源
    最近更新 更多