2017-11-11 149 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);