Remover objetos duplicados de uma matriz usando o javascript
Eu estou tentando descobrir uma maneira eficiente de remover objetos que são duplicados de uma matriz e procurando a resposta mais eficiente. Eu olhei ao redor da internet tudo parece estar usando dados primitivos ... ou não escalável para grandes matrizes. Esta é a minha implementação atual, que pode ser melhorada e tentar evitar rótulos.
Test.prototype.unique = function (arr, artist, title, cb) {
console.log(arr.length);
var n, y, x, i, r;
r = [];
o: for (i = 0, n = arr.length; i < n; i++) {
for (x = 0, y = r.length; x < y; x++) {
if (r[x].artist == arr[i].artist && r[x].title == arr[i].title) {
continue o;
}
}
r.push(arr[i]);
}
cb(r);
};
e a matriz é algo como isto:
[{title: sky, artist: jon}, {title: rain, artist: Paul}, ....]
Ordem não importa, mas se a classificação torna mais eficiente, então eu estou pronto para o desafio ...
e para pessoas que não sabem o é um rótulo e ele está apenas dizendo para voltar ao loop em vez de empurrar para o novo array.
Javascript puro por favor sem libs.
RESPOSTAS ATÉ ATRÁS:
O teste de desempenho para as respostas abaixo:http://jsperf.com/remove-duplicates-for-loops