繁体   English   中英

JavaScript:为什么我的过滤器功能不起作用?

[英]JavaScript: Why is my filter function not working?

我试图过滤出数组中在“ EventNames.Name”中具有空白字符串的项目。

为了使链接最少,我将过滤器分为多个单独的变量。 这是我的功能:

function listViewFilter(){

  var NameFiltered = DateFiltered.map(function (property){ // remove blank EventNames.Name
      return property.EventNames.filter(function (subprop){
         return subprop.Name !== "";
      });
  })

  Filtered = NameFiltered;
}

它仍然没有返回正确的结果。 有人可以帮忙吗? 我想知道是否应该链接而不是嵌套。

{
   "EventNames":[
      {
         "Name":"",
         "EventDate":"APRIL 19, 2015",
         "Ticket":"/losangeles/events/eventdetail/?viewNav=/event-detail&eventId=undefined&oid=undefined"
      }
   ],
   "TMEvents":[

   ],
   "SpecialEvents":[

   ],
   "TMEventImage":[
      {
         "Name":"",
         "EventDate":"APRIL 19, 2015"
      }
   ],
   "Artists":[
      {

      }
   ],
   "EventOffers":[
      {

      }
   ],
   "CrossRoadEvents":[

   ],
   "ImageUrls":[
      {

      }
   ],
   "TicketUrls":[
      {
         "Ticket":"/losangeles/events/eventdetail/?viewNav=/event-detail&eventId=undefined&oid=undefined"
      }
   ],
   "MonthVals":[
      {
         "MonthVal":"APRIL 19 2015"
      }
   ],
   "EventDate":"APRIL 19 2015",
   "VenueName":"House of Blues Las Vegas"
}

http://jsfiddle.net/udmkmLd8/7/

DateFiltered.EventNames = DateFiltered.EventNames.filter(function (property){
     return property.Name !== ""
})

Array.prototype.reduce方法:

reduce()方法对一个累加器应用一个函数,并且数组的每个值(从左到右)必须将其减小为单个值。

如果checked元素通过了我们的规则-我们需要它,否则请检查另一个元素:

function filterByRule(entries, callback) {
  return entries.reduce(function(memo, entry) {
    if(callback(entry)) memo.push(entry);
    return memo;
  }, []);
}

console.log('filteredEntries', filterByRule(entries, function(entry) {
  var result;
  try {
    result = entry.EventNames[0].Name && !/010/.test(entry.EventDate); // test criteria
  } catch(e) {
    console.log('Match returns error:', e);
  }
  return result;
}))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM