How to have multiple filter on an JQuery Array

How to have multiple filter on an JQuery Array

by Akram kamal

JavaScript

// open your console

var minPrice = 201,
    maxPrice = 299,

    products = [{"price":"200","color":"red","size":"small"},{"price":"250","color":"brown","size":"medium"},{"price":"300","color":"red","size":"large"}],
    predicates = [
        function checkMinPrice(product)
        {
            return parseFloat(product.price) > minPrice; 
        },
        function checkMaxPrice(product)
        {
            return parseFloat(product.price) < maxPrice;
        }
    ],
    filteredProducts;

if(!minPrice && !maxPrice)
{
    filteredProducts = products;
}
else
{
    filteredProducts = $.grep(products, function (element, index)
    {
        for (var i=0; i<predicates.length; i++)
        {
            if (!predicates[i](element)) return false;
        }

        return true;
    });
}
    
console.log(filteredProducts);