我想弄清楚一個有效的方法來刪除從數組中重複的對象並尋找最有效的答案。我環顧了互聯網,似乎一切似乎都在使用原始數據......或者對於大型數組不可伸縮。這是我現在可以改進的實現,並且想要避免使用標籤。使用javascript從陣列中刪除重複的對象
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
是你的_Objects_安全爲_JSON_? 「串化」它們並比較它可能是最快的。 **編輯**這可能不是最適合你的,因爲只有當屬性按照相同的順序定義時纔有效。 –
也許這個問題:http://stackoverflow.com/questions/3629817/getting-a-union-of-two-arrays-in-javascript –
你是什麼意思「試圖處理超過1000個結果時失敗」 ?怎麼了? – mayabelle