2017-10-10 2 views
0

Derzeit habe ich unten Funktion zum Filtern der Elemente basierend auf dem Monat und Rückkehr in Array geschrieben und ich habe unten Login verwendet.Optimieren Sie die JS-Funktion zum Filtern der Daten basierend auf Monat

Kann jemand Hilfe ist es eine Möglichkeit, mehr filtern kann sogar leicht datejs oder Moment mit js for-Schleife in effizienter Art und Weise

Hier bin ich immer Datum im Format von 2/Jan/17 und Filterung basierend auf includes Verfahren

Vielen Dank im Voraus!

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

können Sie speichern die Werte von Monat in Array und diejenigen in Ihrem Einzel $ filter iterieren Funktion statt wenn Bedingung viele Male –

Antwort

1

Sie können Underscore group by mit momentjs so etwas wie

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

Nur leichte Korrektur 'var janData = data [" Jan "]? data ["Jan"]. length: 0; ' – Batman

+0

@Batman ok bro muss dann' format ("MM") 'in' format ("MMM") '' ändern – jitender

Verwandte Themen