2012-04-20 71 views
1

我正在循環顯示列表中的行w/$.each,並在每行應用一組篩選器$.each。我想跳過不匹配的行。這有點類似於:

$.each(data, function(i, row) { 
    count  = parseInt(row['n']); 
    year  = row['year']; 

    if (options.filters) { 
     $.each(options.filters, function(filter, filtervalue) { 
      if (row[filter] != filtervalue) return true; 
     }); 
    } 

    // Will only get here if all filters have passed 
} 

我怎樣才能得到嵌套循環$.each跳過如果filtervalue不匹配給定的過濾器行?

回答

1

如果至少沒有一個filtervalue不匹配的過濾器,您想要跳過一行,對不對?然後不要跳過一行ifffiltervalue匹配至少一個過濾器。

$.each(data, function(i, row) { 
    count  = parseInt(row['n']); 
    year  = row['year']; 


    // if there are no filters, don't skip the row (right? ;-) 
    var skipRow = !!options.filters; 

    if (options.filters) { 
     $.each(options.filters, function(filter, filtervalue) { 
      if (row[filter] == filtervalue) { 
       skipRow = false; 
      } 
     }); 
    } 

    if (skipRow) return true; 
}