Список покупок

var groceries = ['чай', 'шпроты', 'печенье', 'сахар', 'чипсы'];
var shoppingList = '';

for (var i = 0; i < groceries.length; i++) {
      shoppingList+=groceries[i];
      if (i == groceries.length -1) {
      break
      }
      shoppingList+=', ';
}

2 flyker
скажите, что значит единица в условии if (i >= 1)?

Это чтобы вначале не стояло запятой.
i >= 1 значит, что только с первого индекса запятые пойдут.
[0, 1, 2, 3, 4…]
Вначале проверяем условие, если i = 0, то условие не выполнено и запятую перед словом “чай” не ставим. Добавляем слово “чай” в переменную shoppingList. Начиная с 1 индекса наша проверка сработает и будет вначале добавляться запятая — перед каждым словом. Последнее слово не включено, потому что цикл прервется (i < groceries.length)

1 лайк

Казалось бы простое задание, а столько вариантов решения!
Вот мой вариант. Использовал только изученные в курсе методы:

var groceries = ['чай', 'шпроты', 'печенье', 'сахар', 'чипсы'];
var shoppingList = '';

for (var i = 0; i <= groceries.length - 2; i++) {
    shoppingList += groceries[i] + ', ';
  }
shoppingList += groceries[groceries.length - 1];
console.log(shoppingList);
 var groceries = ['чай', 'шпроты', 'печенье', 'сахар', 'чипсы'];
 var shoppingList = ''

 for (var i = 0; i<groceries.length - 1; i++) {
  var indexGroceries = groceries[i];
  shoppingList = shoppingList + indexGroceries + ', ' 
 }

shoppingList = shoppingList  + groceries[groceries.length - 1];
console.log(shoppingList);
1 лайк

мое через reduce и toString -

Сводка
var groceries = ['чай', 'шпроты', 'печенье', 'сахар', 'чипсы'];
var shoppingList = groceries
          .reduce((acc, el, i) => {
            (i === 0) ? acc += el : acc += `${`,`} ${el}`;
            return acc;
            ``})
          .toString();
  • хотя, конечно, использовать join тут надо

Имхо, тернарник в таком виде только усложняет понимание того, что там творится.
Не стоит использовать тернарный оператор для симуляции действия конструкции if.

acc += (i === 0) ?  el : `${`,`} ${el}`;

“Смысл оператора '?' – вернуть то или иное значение, в зависимости от условия. Пожалуйста, используйте его по назначению, а для выполнения разных веток кода есть if.”

1 лайк

забей, парень выучил новомодные для него него методы, теперь пихает в кажну щель :joy:
мне когда 18 было, так же делал. ток не с методами xD

Ну, если не он, то кто-то другой обратит внимание и задумается.
Да и не стоит так негативить, он же не сказки о воронках и нубах рассказывает как некоторые другие товарищи :grin:

слушай, умник, давай ты не будешь умничать,…или ты только на словах такой дерзкий?..
у меня знакомый в pushWush работает senior frontend developer - и он вот что сказал -
Ну это хаки js :) как по мне отвратительная фигня тяжело читать и с ходу понимать что твориться...... Ну и у тебя бы я написал проверку более явно что acc[item] !== undefined ? acc[item] += 1 : acc[item] = 1. Плюс у тебя хотя бы нормально написано название переменных, А не p c - так что давай ты не будешь умничать больше,

ты сам то небось никто и зовут тебя никак, а чего то из себя строишь…
И да, я все про тебя понял, не собираюсь больше тебе отвечать и общаться с тобой…Можешь и дальше строить из себя человека всезнайку, негативно относящегося к мнению других

тернарный оператор - это и есть ветка if else - только пишется в одну строку
Имхо, тернарник в таком виде только усложняет понимание того, что там творится. - возможно, ты прав

не, давай за гаражами на ножах баш на баш?

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

Мда. Пожалуй, ты был прав

if/else - конструкция языка для выполнения разных блоков кода в зависимости от предиката. Тернарный оператор - оператор, возвращающий значение в зависимости от предиката. Совершенно разные по логике и по “духу” части языка. Молотком при желании можно и мух бить, да.

1 лайк

image

я знаю что это такое, спасибо

Уважайте, пожалуйста, других пользователей ресурса и сохраняйте спокойное отношение к их мнению. Мы всем имеем право высказываться, но важно сохранять дружелюбный настрой. Мы в HTML Academy не приветствуем такое поведение, поэтому избегайте его впредь, пожалуйста.

3 лайка

Я сделал наоборот:

for (i = 0; i <= groceries.length -1; i++) {
  if (i === groceries.length -1) {
    shoppingList += groceries[i];
    } else {
  shoppingList += groceries[i] + ', ';
  }
}

тоже так сделал

var shoppingList =’’;
for (var i=0; i <groceries.length; i++) {
shoppingList +=groceries[i];
if (i < groceries.length - 1)
shoppingList += ', ';
}
console.log(shoppingList);