Как работает сокращение условия 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))