var groceries = ['чай', 'шпроты', 'печенье', 'сахар', 'чипсы'];
var shoppingList = '';
for (var i = 0; i < groceries.length; i++) {
shoppingList+=groceries[i];
if (i == groceries.length -1) {
break
}
shoppingList+=', ';
}
Это чтобы вначале не стояло запятой.
i >= 1 значит, что только с первого индекса запятые пойдут.
[0, 1, 2, 3, 4…]
Вначале проверяем условие, если i = 0, то условие не выполнено и запятую перед словом “чай” не ставим. Добавляем слово “чай” в переменную shoppingList. Начиная с 1 индекса наша проверка сработает и будет вначале добавляться запятая — перед каждым словом. Последнее слово не включено, потому что цикл прервется (i < groceries.length)
Казалось бы простое задание, а столько вариантов решения!
Вот мой вариант. Использовал только изученные в курсе методы:
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);
мое через 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
.”
забей, парень выучил новомодные для него него методы, теперь пихает в кажну щель
мне когда 18 было, так же делал. ток не с методами xD
Ну, если не он, то кто-то другой обратит внимание и задумается.
Да и не стоит так негативить, он же не сказки о воронках и нубах рассказывает как некоторые другие товарищи
слушай, умник, давай ты не будешь умничать,…или ты только на словах такой дерзкий?..
у меня знакомый в pushWush работает senior frontend developer - и он вот что сказал -
Ну это хаки js :) как по мне отвратительная фигня тяжело читать и с ходу понимать что твориться...... Ну и у тебя бы я написал проверку более явно что acc[item] !== undefined ? acc[item] += 1 : acc[item] = 1. Плюс у тебя хотя бы нормально написано название переменных, А не p c
- так что давай ты не будешь умничать больше,
ты сам то небось никто и зовут тебя никак, а чего то из себя строишь…
И да, я все про тебя понял, не собираюсь больше тебе отвечать и общаться с тобой…Можешь и дальше строить из себя человека всезнайку, негативно относящегося к мнению других
тернарный оператор - это и есть ветка if else - только пишется в одну строку
…Имхо, тернарник в таком виде только усложняет понимание того, что там творится.
- возможно, ты прав
не, давай за гаражами на ножах баш на баш?
можно я тоже буду выдуманных разрабов придумывать? =)
оказывается приведение типов в слаботипизированном языке это хак. ну надо же. ясно понятно.
тернарные операторы улучшают понимание написанного, ясно понятно.
можно подумать, тут маски используются и побитовые операции.
вы мож сразу в TypeScript перейдете и ныть не будете про типы?
Мда. Пожалуй, ты был прав
if/else
- конструкция языка для выполнения разных блоков кода в зависимости от предиката. Тернарный оператор - оператор, возвращающий значение в зависимости от предиката. Совершенно разные по логике и по “духу” части языка. Молотком при желании можно и мух бить, да.
я знаю что это такое, спасибо
Уважайте, пожалуйста, других пользователей ресурса и сохраняйте спокойное отношение к их мнению. Мы всем имеем право высказываться, но важно сохранять дружелюбный настрой. Мы в HTML Academy не приветствуем такое поведение, поэтому избегайте его впредь, пожалуйста.
Я сделал наоборот:
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);