簡體   English   中英

javascript中每個項目的迭代數組

[英]Iterating array for each item in javascript

我有一個對象數組,我想循環遍歷一次 這是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; }


   }

您可以更改sum函數以返回一個具有所有 sum作為屬性的對象-這意味着您只需要循環一次數組即可。

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'];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM