2017-10-10 95 views
0

目前,我已經編寫了下面的函數來過濾基於月份的項目並在Array中返回並且我在下面使用了登錄。優化JS函數根據月份篩選數據

有人可以幫有什麼辦法,我可以使用datejs或力矩的js在2/Jan/17和過濾的格式更高效的方式使用循環

在這裏我得到最新基於includes方法

過濾更容易

在此先感謝!

的Javascript

function getMonthlyCount() { 
    return yearlyExecution() 
     .then(function(myitems) { 
     monthlyDataForGraph = []; 
     var janFinalCount = febFinalCount = marFinalCount = aprFinalCount = mayFinalCount = junFinalCount = julFinalCount = augFinalCount = sepFinalCount = octFinalCount = novFinalCount = decFinalCount = 0; 
     myitems.forEach(function(items) { 
      releasename = items[0].cycleName; 
      janData = $filter('filter')(items, function(inputs) { 
      if (inputs.executedOn.includes("Jan/17")) 
       return inputs; 
      }); 
      febData = $filter('filter')(items, function(inputs) { 
      if (inputs.executedOn.includes("Feb/17")) 
       return inputs; 
      }); 
      marData = $filter('filter')(items, function(inputs) { 
      if (inputs.executedOn.includes("Mar/17")) 
       return inputs; 
      }); 
      aprData = $filter('filter')(items, function(inputs) { 
      if (inputs.executedOn.includes("Apr/17")) 
       return inputs; 
      }); 
      mayData = $filter('filter')(items, function(inputs) { 
      if (inputs.executedOn.includes("May/17")) 
       return inputs; 
      }); 
      junData = $filter('filter')(items, function(inputs) { 
      if (inputs.executedOn.includes("Jun/17")) 
       return inputs; 
      }); 
      julData = $filter('filter')(items, function(inputs) { 
      if (inputs.executedOn.includes("Jul/17")) 
       return inputs; 
      }); 
      augData = $filter('filter')(items, function(inputs) { 
      if (inputs.executedOn.includes("Aug/17")) 
       return inputs; 
      }); 
      sepData = $filter('filter')(items, function(inputs) { 
      if (inputs.executedOn.includes("Sep/17")) 
       return inputs; 
      }); 
      octData = $filter('filter')(items, function(inputs) { 
      if (inputs.executedOn.includes("Oct/17")) 
       return inputs; 
      }); 
      novData = $filter('filter')(items, function(inputs) { 
      if (inputs.executedOn.includes("Nov/17")) 
       return inputs; 
      }); 
      decData = $filter('filter')(items, function(inputs) { 
      if (inputs.executedOn.includes("Dec/17")) 
       return inputs; 
      }); 
      janFinalCount = janFinalCount + janData.length; 
      febFinalCount = febFinalCount + febData.length; 
      marFinalCount = marFinalCount + marData.length; 
      aprFinalCount = aprFinalCount + aprData.length; 
      mayFinalCount = mayFinalCount + mayData.length; 
      junFinalCount = junFinalCount + junData.length; 
      julFinalCount = julFinalCount + julData.length; 
      augFinalCount = augFinalCount + augData.length; 
      sepFinalCount = sepFinalCount + sepData.length; 
      octFinalCount = octFinalCount + octData.length; 
      novFinalCount = novFinalCount + novData.length; 
      decFinalCount = decFinalCount + decData.length; 
     }); 
     monthlyDataForGraph = [janFinalCount, febFinalCount, marFinalCount, aprFinalCount, mayFinalCount, junFinalCount, julFinalCount, augFinalCount, sepFinalCount, octFinalCount, novFinalCount, decFinalCount]; 
     console.log('Monthly Data For Graph', monthlyDataForGraph); 
     return monthlyDataForGraph; 
     }); 
    } 
+0

你可以一個月的值存儲在陣列和重複那些你的單身$過濾器內部功能,而不是如果條件多次 –

回答

1

您可以使用Underscore group bymomentjs

var data= _.groupBy(arr,function(item){return moment(inputs.executedOn,"DD/MMM/YY").format("MMM")}) 



var janData=data["Jan"] ? data["Jan"].length : 0; 

Here is working demo

+0

只是稍微糾正'var janData = data [「Jan」]?數據[「Jan」]。length:0;' – Batman

+0

@Batman ok bro然後需要將'format(「MM」)'改爲'format(「MMM」)' – jitender