[英]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 !== ""
})
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.