Сообщение от Maxmaxmахimus
|
но это так криво выглядит что я сделал обычный перебор.
|
что там кривого?
FINoM свой код не написал. (запускаемый пример)
Пример: Gvozd
var arr, i, c, st;
for(i = 0, c = 1e4, arr = []; i < c; i += 1) arr.push({ id: i > c/2 ? i:c-i });
st = Date.now();
var newArr = arr.sort(function(a,b){return a.id < b.id ? -1 : 1;}).reduce(function(arr, el){
if(!arr.length || arr[arr.length - 1].id != el.id) {
arr.push(el);
}
return arr;
}, []);
console.log("Gvozd", Date.now() - st);
у кода
9xakep тот же принцип, что и у кода
Maxmaxmахimus, только у последнего исп-ся быстрые функции, реализованные в движке. (или я по диагонали его код прочитал?)
Пример: Maxmaxmахimus
var arr, i, c, st;
for(i = 0, c = 1e4, arr = []; i < c; i += 1) arr.push({ id: i > c/2 ? i:c-i });
st = Date.now();
var newArr = [];
arr.forEach(function(el){
var someOne = newArr.some(function(el2){return el['id'] === el2['id']});
if( !someOne ) {
newArr.push(el);
}
});
console.log("Maxmaxmахimus", Date.now() - st);
Пример: melky
var arr, i, c, st;
for(i = 0, c = 1e4, arr = []; i < c; i += 1) arr.push({ id: i > c/2 ? i:c-i });
st = Date.now();
var used = {};
var filtered = arr.filter(function(obj) {
return obj.id in used ? 0:(used[obj.id]=1);
});
console.log("melky", Date.now() - st);