Dynamic “filtering” list using jquery
It is customary to use lowercase names for variables and Capitalized names for classes, so I would rename Genders -&gt; genders, and likewise the Models and Brands arrays too.



The if blocks are a bit tediously written. They would be better this way:

var genderFilter = $(this).attr('data-Gender');
if (genderFilter) {
    if (jQuery.inArray(genderFilter, genders) == -1) {
         // Element was not found, add it.
         genders.push(genderFilter);
    }
}


Btw, note that when you retrieve data-Gender="0" using .attr('data-Gender'), it's treated as the string "0", and in if ("0") { ... } it evaluates to true, so the genders array will have the values 0, 2, 1. Perhaps you might want to use .data('genders') instead, in which case the genders array will have the values 2, 1.

For models and brands, using .data('model') instead of .attr('data-Model') will give the same result, so I suggest using the simpler.



For genders, models, brands, you do essentially the same thing.
This calls for a helper function:

function addToArrayIfNew(arr, item) {
    if (item &amp;&amp; jQuery.inArray(item, arr) == -1) {
        arr.push(item);
    }
}


With this, you could simplify the entire code like this:

$( ".mix" ).each(function() {
    addToArrayIfNew(genders, $(this).attr('data-Gender'));
    addToArrayIfNew(models, $(this).data('model'));
    addToArrayIfNew(brands, $(this).data('brand'));
});