Как в JS прочередовать цвета по дням месяца по очереди (месяца приходят в параметрах)
В функцию прилетает рандомное количество аргументов с количеством дней в месяце (например, (31, 30, 31)). Необходимо разбить все месяца на дни и присвоить каждому дню нужный цвет в формате День 1 - Цвет. Условие: цвет должен меняться через день. Также в условиях проверки мы обязательно должны использовать как число, так и месяц. Вот то что у меня получилось
function colorToDay() {
let arr = [];
// создаем цикл по месяцам, внутри этого цикла с каждого месяца достаем число и присваиваем ему цвет
// (если число четное - синий, если нечетное - желтый), после этого пушим в массив
for (let x = 0; x < arguments.length; x++) {
for (let i = 1; i <= arguments[x]; i++) {
if (i % 2 === 0) {
arr.push(`День ${i} - Синий`)
} else {
arr.push(`День ${i} - Желтый`)
}
}
}
// выводим массив в консоль
for (let n of arr) {
console.log(n);
}
return 'finish'
}
console.log(colorToDay(31, 30, 31));
Проблема в том, что когда в месяце 31 день, то день заканчивается на Желтый цвет, а следующий месяц тоже начинается на Желтый, что нарушает условия задачи (цвета должны чередоваться). Чего не хватает?
Ответы (1 шт):
Автор решения: Pavel Nazarian
→ Ссылка
function colorToDay() {
let arr = [];
// создаем цикл по месяцам, внутри этого цикла с каждого месяца достаем число
for (let x = 0; x < arguments.length; x++) {
for (let i = 1; i <= arguments[x]; i++) {
arr.push(`День ${i}`);
}
}
//в общем массиве по четности индекса присваиваем цвет
let new_arr = arr.map((item,index) => {
return (index%2 == 0) ? item+' - желтый' : item+' - синий'
});
// выводим массив в консоль
for (let n of new_arr) {
console.log(n);
}
return 'finish'
}
console.log(colorToDay(31, 30, 31));