2017-11-11 148 views
-5

/* *使用了一系列三元运算符的类别设置为以下之一: * - “草食”如果动物吃植物 * - “食肉动物”如果动物吃动物 * - “杂食动物”如果动物吃植物和动物 * - 如果一种动物不吃的植物或动物 * 不确定*注* - 使用变量eatsPlantseatsAnimals在三元表达式 * - 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

你好,欢迎光临!请记住,StackOverflow不是一个讨论论坛或代码编写服务。可能值得看看[本文] [1],它有一些关于如何提出一个很好的问题的提示,可以帮助你找到你正在寻找的答案。 [1]:https://stackoverflow.com/help/how-to-ask – pmcilreavy

+0

'如果动物不吃植物或动物,则不确定... ...但是当动物不吃植物时你输出不确定和动物 - 你需要刷上你的布尔逻辑 –

+0

也应该是'undefined'既不吃也不是''undefined'' –

回答

0

这将工作 -

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

这应该可以解决您的问题。

var eatsPlants = false; 
var eatsAnimals = true; 

var category = (eatsPlants) ? (eatsAnimals) ? "omnivore" : "herbivore" 
: eatsAnimals ? "carnivore" : undefined; 

console.log(category);