Em diversas situações temos um array com valores repetidos, porém queremos obter somente os valores disintos, podemos aplicar o método filter o array para obtê-los, como no exemplo abaixo:
var arr = [1,'c',2,1,7,,1,'b',1,2,2,2,'a',2,3,3,'a',3,4,4,'c','c','4d',5,5,5,6];
var _distinct = function(array){
return array.filter(function(value, index, self){
return self.indexOf(value) == index;
});
};
console.log(_distinct(arr)); //[1, "c", 2, 7, "b", "a", 3, 4, "4d", 5, 6]
A seguir, um exemplo de como filtrar os distindos em um array de objetos:
var produtos = [
{
nome : "Arroz",
categoria : "Alimento"
},
{
nome: "Feijão",
categoria: "Alimento"
},
{
nome : "Alvejante",
categoria : "Limpeza",
},
{
nome : "Sabão em pó",
categoria : "Limpeza",
},
{
nome : "Banana",
categoria: "Horti-Fruti"
}
];
var _distinct = function(array){
return array.map(function(item){
return item.categoria;
}).filter(function(value, index, self){
return self.indexOf(value) == index;
});
};
console.log(_distinct(produtos)); //["Alimento", "Limpeza", "Horti-Fruti"]