user2916134
user2916134

Reputation:

JavaScript: Can this code be refactored to a more functional programming style?

Can this code be chained and the for loop abstracted away? Using map and filter?

function listViewFilter(){ // test

  var DateFiltered = containerdata.filter(function (obj){ // remove dates of 010
    return !/010/.test(obj.EventDate); 
  });

  var NameFiltered = [];

  for (var i = 0; i < DateFiltered.length; i++){  // remove EventNames.Name if empty string
    if (DateFiltered[i].EventNames[0].Name == "") continue;
    else NameFiltered.push(DateFiltered[i]);
  }

  Filtered = NameFiltered;
}

Upvotes: 3

Views: 56

Answers (1)

Bergi
Bergi

Reputation: 664196

Sure, your for loop does nothing but another filter:

function listViewFilter() {
  var DateFiltered = containerdata.filter(function(obj) { // remove dates of 010
    return !/010/.test(obj.EventDate); 
  });
  var NameFiltered = DateFiltered.filter(function(obj, i) { // remove EventNames.Name if empty string
    return obj.EventNames[0].Name != "";
  });
  Filtered = NameFiltered;
}

or in short

function listViewFilter() {
  Filtered = containerdata.filter(function(obj) {
    return !/010/.test(obj.EventDate) && obj.EventNames[0].Name != "";
  });
}

Upvotes: 1

Related Questions