Как прописать "Если любое из значений объекта повторяется - вернуть 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.