2012-06-03 61 views
1

Based on Subhaze's Function named "filterScore"多个记录ID ......刚刚工作的罚款,如果有单个值需要传递给KEY ...但我的问题是,如果有多个值需要被解析什么?过滤JSON数据与jQuery的

例如像有一个名为brand_id关键是整数。而我想在JQuery中RegExpFilterMatch解析那些具有brand_id = 1 OR 3 OR 5 OR 7(多个)数据......请帮我这个guyz!

我该怎么做?

真的很感激,如果有人可以帮我这个

回答

1

作为品牌标识是一个列表,而不是你可以修改过滤函数接受brand_id作为数组,而不是regex的模式。新的过滤器功能将

function filterStore(dataStore, filter) { 
    return $(dataStore).filter(function(index, item) { 
     for(var i in filter) { 
      if(filter[i] instanceof Array){ 
       if($.inArray(parseInt(item[i],10),filter[i]) == -1) 
       return null; 
       else 
       continue;     
      } 
      if(! item[i].toString().match(filter[i])) return null; 
     } 
     return item; 
    }); 
} 

然后你就可以把你所有的品牌标识是一个数组中这样

var filter = { 
    "brand_id": [1,2,3], 
    "productname": new RegExp('(.*?)', 'gi'), 
    "price": new RegExp('.*?', 'gi') 
}; 

Working Example

+0

感谢喜悦!它为我工作..但是会发生什么......当我们匹配brand_id 1,2或3 ...它也返回记录包含11,12,13或甚至33,22,11 ..因为它匹配1,2或者3个关键字命名为“brand_id”..如何解决这个问题? – idleMind

+0

您可以更好地为'brand_id'传递一个数组,因为您有一组值来检查而不是'pattern',所以我修改了可以传递'brand_id'数组的过滤器函数,请点击此处http: //jsfiddle.net/joycse06/bsaJm/4/ –

+0

嘿,快乐......感谢很多人..你让我的一天.. :)但想问是否有任何其他选项没有循环所有的记录? ?因为处理大量记录需要很长时间。 – idleMind