Как прописать "Если любое из значений объекта повторяется - вернуть null"

Нужно создать функцию 'inverseRobot', которая принимает 'robot' в качестве параметра и возвращает новый объект, в котором ключи меняются местами со значениями.

function inverseRobot(robot) {
 
 return Object.fromEntries(Object.entries(robot).map(([key, value]) => [value, key]));
}

Example:
 
 const kolli = { Kolli: 'name', 123: 'chipVer', 3: 'wheels' };
 const robert = { Robert: 'name', 123: 'chipVer', 113: 'chipVer' };
 inverseRobot(robert) === null
 inverseRobot(kolli) === { name: 'Kolli', chipVer: '123', wheels: '3' }

Как прописать "Если любое из значений объекта повторяется - вернуть null"?


Ответы (2 шт):

Автор решения: Igor

function inverseRobot(robot) {
  let res = Object.fromEntries(Object.entries(robot).map(([key, value]) => [value, key]));
  return Object.keys(res).length < Object.values(robot).length? null : res;
}

const kolli = {
  Kolli: 'name',
  123: 'chipVer',
  3: 'wheels'
};
const robert = {
  Robert: 'name',
  123: 'chipVer',
  113: 'chipVer'
};
console.log(inverseRobot(robert));
console.log(inverseRobot(kolli));

→ Ссылка
Автор решения: Frog
function inverseRobot(robot) { 
    return Object.entries(robot).reduce(
        (accum, [key,value]) =>
            !accum || accum[value] ? null : Object.assign(accum, {[value]: key})
        , {}
    );
}

Вариант через reduce.

→ Ссылка