Как работает сокращение условия if ( ? ) с return?

Как реализовать return через сокращенное условие if ( ? )?

Пример как должно быть "из головы" ниже:

const userFirst = { name: 'Petr', age: 8 };
const userSecond = { name: 'Bober', age: 12 };

function getOlderUser(user1,user2){
    
  let result = user1.age > user2.age;
   result ?  return user1 :  return user2
   return null
}

console.log(getOlderUser(userFirst,userSecond)) 

пример без сокращения :

const userFirst = {
  name: 'Petr',
  age: 8
};
const userSecond = {
  name: 'Bober',
  age: 12
};

function getOlderUser(user1, user2) {
  if (user1.age > user2.age) {
    return user1
  }
  if (user2.age > user1.age) {
    return user2
  }
  return null
}

console.log(getOlderUser(userFirst, userSecond))

ближайшее и очевидное к чему я смог прийти это :

const userFirst = {
  name: 'Petr',
  age: 8
};
const userSecond = {
  name: 'Bober',
  age: 12
};

function getOlderUser(user1, user2) {

  let result = user1.age > user2.age;
  return result ? user1 : user2
}
console.log(getOlderUser(userFirst, userSecond))

но тогда не выходит вывести что-то при равном значении "age".


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

Автор решения: Alex D.

Ответ найден, спасибо

 return (user1.age === user2.age) ? null : ((user1.age > user2.age) ? user1 : user2);
→ Ссылка
Автор решения: ksa

можно ли реализовать return через сокращенное условие

Когда есть три варианта - можно реализовать вот такой return.

const userFirst = { name: 'Petr', age: 8 };
const userSecond = { name: 'Bober', age: 12 };

function getOlderUser(user1,user2){
  return [user2, null, user1][Math.sign(user1.age - user2.age) + 1]
}

console.log(getOlderUser(userFirst,userSecond))

→ Ссылка