Используйте условный оператор. Если случайная сумма равна one
, не добавляйте s
, в противном случае добавьте s
:
var amount = ["zero", "one", "two"];
var fruit = ["apple", "banana", "orange", "grape"];
var rand1 = [Math.floor(Math.random() * amount.length)];
var rand2 = [Math.floor(Math.random() * fruit.length)];
document.write("I have" + " " + amount[rand1] + ' ' + fruit[rand2] + (amount[rand1] === 'one' ? '' : 's') + ".");
Может быть более читабельным с использованием литералов шаблона:
var amount = ["zero", "one", "two"];
var fruit = ["apple", "banana", "orange", "grape"];
var rand1 = [Math.floor(Math.random() * amount.length)];
var rand2 = [Math.floor(Math.random() * fruit.length)];
document.write(`I have ${amount[rand1]} ${fruit[rand2]}${amount[rand1] === 'one' ? '' : 's'}.`);
Выражение
amount[rand1] === 'one' ? '' : 's'
означает: если выражение amount[rand1]
оценивается в one
, условное выражение в целом оценивается в ''
, иначе все условное выражение оценивается как ''
. Это более краткая версия if
/ else
, когда вам нужно что-то оценить для того или иного значения.
Также обратите внимание, что document.write
редко является хорошей идеей - если вы хотите показать данные пользователь, подумайте о вставке текста в элемент или использовании console.log
или что-то в этом роде. (См. Почему document.write считается "плохой практикой"?