Maxmaxmахimus,
у вас сложность O(N*N)
есть гораздо более быстрый вариант - O(N*lg N) - сперва отстортировать, а затем перенести в новый массив оставив только один из подряд идущих одинаковых
var arr = [1, 2, 3, 1, 2, 3, 5];
var newArr = arr.sort().reduce(function(arr, el){
if(!arr.length || arr.length && arr[arr.length - 1] != el) {
arr.push(el);
}
return arr;
}, []);
console.log( newArr );
var arr = [{id:3}, {id:5}, {id:3}];
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( newArr );