Смузи, маффин, гироскутер

Ребята привет, вот мой вариант кода, все рабочее, но очень длинно, как по мне, пока что мастерства для сокращения мало, показывайте как можно сократить и сделать код более красивым и лаконичным.
Только прошу учитывать ограничения в задании, знаем мы только УСЛОВИЯ, ЦИКЛЫ и МАССИВЫ.

// Состав смузи

var liquids = ['вода', 'молоко', 'сок', 'чай', 'йогурт'];
var fruits = ['киви', 'банан', 'персик', 'манго', 'груша', 'ананас'];
var greens = ['мята', 'шпинат', 'руккола', 'петрушка', 'базилик'];


// Выбор посетителя

var chosenLiquid = 1;
var chosenFruit = 3;
var chosenGreen = 2;

var selectLiquid;
var selectFruit;
var selectGreen;


  for (var i = 0; i < liquids.length; i++) {
    if (i === chosenLiquid - 1) {
      console.log (liquids[i]);
      selectLiquid = liquids[i];
    }
    
  }
  
  for (var j = 0; j < fruits.length; j++) {
    if (j === chosenFruit - 1) {
      console.log (fruits[j]);
      selectFruit = fruits[j];
    }
  }
  
  for (var k = 0; k < greens.length; k++) {
    if (k === chosenGreen - 1) {
      console.log (greens[k]);
      selectGreen = greens[k];
    }
  }

// Заказ

var order = 'Основа — ' + selectLiquid + ', фрукт — ' + selectFruit + ', зелень — ' + selectGreen;

console.log (order);
1 лайк

Вот такой вариант

// Состав смузи

var liquids = ['вода', 'молоко', 'сок', 'чай', 'йогурт'];
var fruits = ['киви', 'банан', 'персик', 'манго', 'груша', 'ананас'];
var greens = ['мята', 'шпинат', 'руккола', 'петрушка', 'базилик'];

// Выбор посетителя

var chosenLiquid = 1;
var chosenFruit = 3;
var chosenGreen = 2;

// Заказ

var order = 'Основа — ' + liquids[chosenLiquid -1] + ', фрукт — ' + fruits[chosenFruit -1] + ', зелень — ' + greens[chosenGreen -1];
console.log(order);
13 лайков

Господи, я безнадёжен :sweat_smile:
Так всё просто на самом то деле.

У меня важный вопрос, я ради этого только на форуме и зарегистрировался.
А как Вы ставите длинное тире — ???
У меня получается, только такое - или такое _ .
Очень интересует, т.к я час мучился пока не дошло, что такое - воспринимается программой скорее как минус, а не тире.
Там получается данные верные, но проверка вся красная.
Я это тире получил таким образом, просто его скопировал и вставил.
Подскажите мне пожалуйста, как это тире быстро ставить сразу с клавиатуры.

— такое?

var Em_Dash = “\u2014”;

1 лайк

О спасибо тебе огромное. Я теперь это обязательно запомню alt + 0151.
А то я постоянно с этим сталкивался.

order = ('Основа — ’ + liquids[chosenLiquid - 1] + ', фрукт — ’ + fruits[chosenFruit - 1] + ', зелень — ’ + greens[chosenGreen - 1]);

еще один вариант на индекс 0, ставлю подсказку для пользователя

var liquids = ['вода', 'молоко', 'сок', 'чай', 'йогурт'];
var fruits = ['киви', 'банан', 'персик', 'манго', 'груша', 'ананас'];
var greens = ['мята', 'шпинат', 'руккола', 'петрушка', 'базилик'];

// Выбор посетителя

var chosenLiquid = 1;
var chosenFruit = 3;
var chosenGreen = 2;

// Заказ

liquids.unshift('Введите цифру от 1');
fruits.unshift('Введите цифру от 1');
greens.unshift('Введите цифру от 1');

var order = 'Основа — ' + liquids[chosenLiquid] +  ', фрукт — ' + fruits[chosenFruit] +  ', зелень — ' + greens[chosenGreen];
2 лайка

liquids.unshift(‘Введите цифру от 1’);
fruits.unshift(‘Введите цифру от 1’);
greens.unshift(‘Введите цифру от 1’);
А это для чего, заменяет -1? Мы ещё unshift не проходили вроде.

а вы его в принципе не пройдете. его на курсах не дают.
суть что он добавляет в массивы по первому элементу-подсказке, что в конечном итоге увеличивает длину массивов и соответственно решает проблему счета между программистами (которые счет ведут с 0) и обычными людьми (которые счет ведут с 1)
имхо через -1 проще

2 лайка

однако засада с тире …=( (пока не скопировала, ( спасибо [Valery_S]) проверку не проходила. Код прилагаю ниже, буду признательна за замечания

var order = ‘’;

var i=chosenLiquid-1;

var j=chosenFruit-1;

var k=chosenGreen-1;

var order = 'Основа — '+liquids[i] + ', фрукт — ’ + fruits[j]+ ', зелень — ’ +greens[k];

console.log (order);

Можно сделать чуть попроще без индексов в order

var order = ‘’;

var liquid = liquids[chosenLiquid - 1];
var fruit = fruits[chosenFruit - 1];
var green = greens[chosenGreen - 1];

order = 'Основа — ’ + liquid + ', фрукт — ’ + fruit + ', зелень — ’ + green;

for (var i = 0; i <= liquids.length; i++) {
if (i === chosenLiquid - 1) {
console.log(liquids[i]);
chosenLiquid = liquids[i];
}
}

for (var i = 0; i <= fruits.length; i++) {
if (i === chosenFruit - 1) {
console.log(fruits[i]);
chosenFruit = fruits[i];
}
}

for (var i = 0; i <= greens.length; i++) {
if (i === chosenGreen - 1) {
console.log(greens[i]);
chosenGreen = greens[i];
}
}

order ='Основа — ’ + chosenLiquid + ', фрукт — ’ + chosenFruit + ', зелень — ’ + chosenGreen;

Не вижу смысла в циклах:

// Состав смузи

let liquids = ['вода', 'молоко', 'сок', 'чай', 'йогурт'];
let fruits = ['киви', 'банан', 'персик', 'манго', 'груша', 'ананас'];
let greens = ['мята', 'шпинат', 'руккола', 'петрушка', 'базилик'];

// Выбор посетителя

let chosenLiquid = 1;
let chosenFruit = 3;
let chosenGreen = 2;

// Заказ

let order = '';

order += 'Основа — ' + liquids[chosenLiquid - 1] + ', ' + 'фрукт — ' + fruits[chosenFruit - 1] + ', ' + 'зелень — ' + greens[chosenGreen - 1];

const order = Основа — ${liquids[chosenLiquid - 1]}, фрукт — ${fruits[chosenFruit - 1]}, зелень — ${greens[chosenGreen - 1]};

order += 'Основа — ’ + liquids[chosenLiquid - 1] + ', ’ + 'фрукт — ’ + fruits[chosenFruit - 1] + ', ’ + 'зелень — ’ + greens[chosenGreen - 1];

Сам не додумался до такого, круто! Что то, это задание мне и через циклы еле далось.

2 лайка

Почему не сработало когда я просто добавил на “0” индекс пустую строку? А вот вариант выше сработал

// Состав смузи

let liquids = [ ' ', 'вода', 'молоко', 'сок', 'чай', 'йогурт'];
let fruits = [' ', 'киви', 'банан', 'персик', 'манго', 'груша', 'ананас'];
let greens =[' ', 'мята', 'шпинат', 'руккола', 'петрушка', 'базилик'];

// Выбор посетителя

let chosenLiquid = 5;
let chosenFruit = 6;
let chosenGreen = 3;

// Заказ

let order = 'Основа — ' + liquids[chosenLiquid] + ', фрукт — ' + fruits[chosenFruit] + ', зелень — ' + greens[chosenGreen];
console.log(order);
liquids[chosenLiquid - 1]
Из пройденных тем:
счёт индексов массива начинается с 0, а клиент выбирает начиная с 1. Соответственно пункт массива должен соответствовать, значению выбора клиента - 1.

Ответ на ваш вопрос в этой логике.