Спс, но вот еще вариант
var clean = arr.filter(function(obj, i) {
return (obj.version + ':' + obj.group in used) ? 0 : (used[obj.version + ':' + obj.group]= 1);
});
Еще вопрос, как можно из такого массива
[ { group: 'group-sedan', version: 'iv' },
{ group: 'group-wagon_5', version: 'iv' },
{ group: 'group-sedan', version: 'iii' },
{ group: 'group-wagon_5', version: 'iii' },
{ group: 'group-wagon_5', version: 'ii' },
{ group: 'group-sedan', version: 'ii' },
{ group: 'group-coupe', version: 'i' },
{ group: 'group-sedan', version: 'i' } ]
Получить двумерный массив, распределенный по значению version
[[ { group: 'group-sedan', version: 'iv' },
{ group: 'group-wagon_5', version: 'iv' }],
[{ group: 'group-sedan', version: 'iii' },
{ group: 'group-wagon_5', version: 'iii' }],
[{ group: 'group-wagon_5', version: 'ii' },
{ group: 'group-sedan', version: 'ii' }],
[{ group: 'group-coupe', version: 'i' },
{ group: 'group-sedan', version: 'i' } ]]