2014-09-26 58 views
0

如果我知道filterparameters的編號是未知的,或者即使它包含任何鍵和值,那麼通過這樣的對象進行篩選的最佳方法是什麼。我正在考慮先循環filterparameters,然後構建一個AND運算符。這個問題最好的解決方案是什麼?使用javascript/Jquery創建AND運算符的循環對象

var filterParameters = {color: "red", size: "small"}; 
var jsonFiltered = $.grep(json, function (j) { 
    return (j.color === filterParameters.color) && (j.size === filterParameters.size) 
}); 

http://jsfiddle.net/pxjLhoqo/

回答

1

可以遍歷您的過濾器參數,使用key,以檢查它在json當前迭代針對值:

var filterParameters = {color: "red", size: "small"}; 
var jsonFiltered = $.grep(json, function (j) { 
    filter = true; 
    $.each(filterParameters, function(i, v){ 
     filter = j[i] != v ? false : filter 
    }); 
    return filter; 
}); 

JSFiddle

0

使用Object.keys進行迭代。鍵將對象的所有屬性作爲新數組返回。

var keys = Object.keys(filterParameters); 
keys.length --> 2 
keys[0] ---> "color" 

for(i=0;len=keys.length;i<len;i++){ 
    //filterParameters[keys[i]] do some processing here. 
} 

PS:這不會對IE <工作9

0

您可以使用filterevery連同Object.keys

var where = function(obj, xs) { 
    return xs.filter(function(x) { 
    return Object.keys(obj).every(function(k) { 
     return obj[k] === x[k]; 
    }); 
    }); 
}; 

var jsonFiltered = where(filterParameters, json); 

DEMO:http://jsfiddle.net/pxjLhoqo/2/