重複しているオブジェクトを配列から削除する効率的な方法を見つけようとしており、最も効率的な答えを探しています。私はインターネットを見回して、すべてがプリミティブデータを使用しているようです...または大規模な配列に対してスケーラブルではありません。これは私の現在の実装であり、改善することができ、ラベルを回避したいと考えています。
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 はライブラリを使用しないでください。
これまでの回答:
以下の回答に対するパフォーマンス テスト: http://jsperf.com/remove-duplicates-for-loops