/ *
*使用一系列三元运算符将类别设置为以下之一:
* - "草食动物"如果动物吃植物
* - "食肉动物"如果动物吃动物
* - "杂食动物"如果动物吃植物和动物
* - 如果动物不吃植物或动物,则不确定
*
*备注
* - 在三元表达式中使用变量eatsPlants
和eatsAnimals
* - if
语句不允许;-)
* /
我使用了这段代码,但它没有把事情搞定
var eatsPlants = true;
var eatsAnimals = false;
var category = eatsPlants ? "herbivore" : "carnivore";
console.log(category);
var category = (eatsPlants && eatsAnimals) ? "omnivore" : "undefined";
console.log(category);
解决这个问题的任何想法
答案 0 :(得分:2)
这将有效 -
const category = (eatPlants && eatAnimals) ? 'omnivore' : eatAnimals ? 'carnivore' : eatPlants ? 'herbivore' : undefined;
如果您希望使用三元运算符绘制if-else分支,则需要将一个三元组的其他部分链接到另一个三元组等等。
但我建议,如果其他分支保持代码的可读性,你就会使用它。三元组只是在多种条件下弄得一团糟。
这在if-else逻辑中有多清楚。
let category = undefined;
if (eatPlants && eatAnimals)
category = 'omnivore';
else if (eatPlants)
category = 'herbivore';
else if (eatAnimals)
category = 'carnivore';
答案 1 :(得分:1)
这可以解决您的问题。
var eatsPlants = false;
var eatsAnimals = true;
var category = (eatsPlants) ? (eatsAnimals) ? "omnivore" : "herbivore"
: eatsAnimals ? "carnivore" : undefined;
console.log(category);
答案 2 :(得分:0)
var eatsPlants = false;
var eatsAnimals = false;
var category = (eatsPlants && eatsAnimals) ? "omnivore" :
( eatsPlants && ! eatsAnimals )? "herbivore" :
(! eatsPlants && eatsAnimals) ? "carnivore" :
"undefined" ;
console.log(category);