Я пытаюсь найти эффективный способ удаления объектов, которые являются дубликатами из массива, и ищет наиболее эффективный ответ. Я огляделся по всему интернету, все, кажется, использует примитивные данные... или не масштабируется для больших массивов. Это моя текущая реализация, которая может быть улучшена и вы хотите попытаться избежать ярлыков.
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);
};
и массив выглядит примерно так:
[{title: sky, artist: jon}, {title: rain, artist: Paul}, ....]
Заказ не имеет значения, но если сортировка делает его более эффективным, я решаю проблему...
и для людей, которые не знают o, является меткой, и это просто говорит о возврате к циклу, а не к нажатию на новый массив.
Чистый javascript, пожалуйста, нет libs.
ОТВЕТЫ ТАК ДАЛЬШЕ:
Тест производительности для ответов ниже: http://jsperf.com/remove-duplicates-for-loops