如果filterparameters的数量未知,或者即使它包含任何键和值,通过这种对象进行过滤的最佳方法是什么。我正在考虑先遍历filterparameters,然后构建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/

最佳答案

您可以遍历过滤器参数,使用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

09-17 20:24