#javascript #arrays
#javascript #массивы
Вопрос:
В чистом JavaScript, используя функцию getDaysArray, найденную в другом месте в Stack, которая создает одномерный массив объектов Date, я затем вставляю элемент перед каждым воскресеньем. Если следующие 6 дней равны 1, то я вставляю название месяца, в противном случае — разделитель. Вот рабочий код:
const mon = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
var getDaysArray = function(s,e) {for(var a=[],d=s;d<=e;d.setDate(d.getDate() 1)){ a.push(new Date(d));}return a;};
da = getDaysArray(new Date(2019,02,31), new Date(2019,04,04));
for(let elementIndex=0; elementIndex < da.length; elementIndex ){
let q="";
if(da[elementIndex].getDay() == 0) {
for(let lookAheadIndex = elementIndex 1; lookAheadIndex<elementIndex 7; lookAheadIndex ){
if (da[lookAheadIndex].getDate() == 1){
q = mon[da[lookAheadIndex].getMonth()];
}
}
q = (q != "") ? da.splice(elementIndex,0,q) : da.splice(elementIndex,0,'SPACER AT ' elementIndex);
}
elementIndex ;
}
document.write(da "<p>");
document.write(da.length);
Есть ли лучший, более быстрый, элегантный и чистый способ добиться этого с использованием встроенных методов массива? Заранее благодарю вас.
Ответ №1:
Документы Array.prototype () из MSDN очень помогли мне в ситуациях, подобных вашей. Возможно, вы захотите ознакомиться с методами, доступными здесь
Комментарии:
1. Спасибо. Я бы действительно хотел заменить циклы for на array.forEach, но у меня возникли проблемы с индексом forEach после вставки соединения. Я понимаю, что forEach определяет длину массива перед функцией, но даже добавление к индексу внутри функции, похоже, не работает.