Накину еще вариантик с комментариями
// Исходный объект
const obj: {
12345: 1,
12346: 2,
12356: 1,
12357: 1,
12360: 1,
}
// Результат
let result = {};
// Делаем из объекта массив, пригодный для преобразования в объект Map
const mapableArray = Object.entries(this.obj);
// Меняем местами ключи и значения
const mapableReversedArray = mapableArray.map(kv => [kv[1], kv[0]]);
// Создаем объект Map из обращенного массива
// При это дубликаты ключей будут перезаписаны и станут уникальными
const map = new Map(mapableReversedArray);
// Осталось только собрать целевой объект
map.forEach(function(value, key) { result[key] = value; });
// И использовать результат
console.log(result);
Ну и этот же вариант в краткой записи
let result = {};
(new Map(Object.entries(this.obj).map(kv => [kv[1], kv[0]])))
.forEach(function(value, key) { result[key] = value; });
console.log(result);
Или используя редьюсер
let result = Array.from(
(new Map(Object.entries(this.obj).map(kv => [kv[1], kv[0]])))
).reduce((acc, v) => { acc[v[1]] = v[0]; return acc; }, {});
Но тут мы уже тоже начинаем смахивать на обфускатор. Ну нафиг такой код =))
В общем суть: поменять местами ключи и значения, запихнуть объект в Map, чтобы уникализировать значения (которые стали ключами), потом собрать все обратно.