JavaScript:这段代码可以被重构成更具功能性的编程风格吗?

JavaScript:这段代码可以被重构成更具功能性的编程风格吗?,javascript,functional-programming,Javascript,Functional Programming,这个代码可以被链接起来,for循环可以被抽象掉吗?使用映射和过滤器 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 < D

这个代码可以被链接起来,for循环可以被抽象掉吗?使用映射和过滤器

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;
}
函数listViewFilter(){//test
var DateFiltered=containerdata.filter(函数(obj){//删除010的日期
返回!/010/.test(obj.EventDate);
});
var NameFiltered=[];
对于(var i=0;i
当然,您的
for
循环除了另一个过滤器外什么也不做:

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;
}
或者简言之

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

为什么不在第一个过滤器中使用
return完成呢/010/.test(obj.EventDate)和&obj.EventNames[0]。Name!=""; ?从这里开始,只需使用
map
使数组只包含名称。