про новые методы все забыли ? Array.prototype.filter легко реализуется в IE, а сама проверка существование через in - самая быстрая операция в JS (на хабрэ читал исследование)
нужна проверка по ID, а это примитив... как раз сюда подойдет оператор in.
var used = {};
var arr = [{id:3}, {id:5}, {id:3}, {id:3}, {id:3}, {id:7}, {id:7}];
var filtered = arr.filter(function(obj) {
return obj.id in used ? 0:(used[obj.id]=1);
/*
var res = !(obj.id in used);
used[obj.id] = null;
return res;
*/
});
console.log(filtered);
Сообщение от FINoM
|
Другой вопрос. Что быстрее: удалять совпадения (сплайсом) или пихать уникальные объекты в новый массив?
|
сплайс будет сдвигать все последующие значения, заполняя просвет. очень медленно