После просмотра значений массива повторите процесс, если элементов больше

#javascript

#javascript

Вопрос:

Итак, у меня есть некоторые элементы, которые необходимо динамически заполнять этими месяцами. Прямо сейчас процесс повторяется один раз. Есть ли способ, которым я могу изменить его, чтобы он продолжал перебирать этот массив, пока не закончатся элементы «.point» в html?

JS

 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var monthsLength = months.length;
var points = $('.point');
for (var i = 0; i < monthsLength; i  ) {
    var point = points[i];
    if (!point) {
        break;
    }
    point.setAttribute("data-date", months[i]);
}
 

Ответ №1:

Согласно синтаксису вашего кода, я предполагаю, что вы используете jQuery.

Если количество элементов меньше или равно 12, вы можете просто переместить элемент из массива месяцев для каждой точки.

 $('.point').each(function() {
    $(this).attr("data-date", months.shift());  
});
 

Если точек больше 12, то было бы лучше получить соответствующий месяц, используя операцию mod division для индекса массива. Используя этот способ, вы можете перебирать массив месяцев столько, сколько необходимо.

PS: Вы можете просмотреть элементы в окне вывода, используя инструмент разработчика браузера, чтобы увидеть результаты.

 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];

$('.point').each(function(index, value) {
    $(this).attr("data-date", months[index % 12]);  
}); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class='point'></div>
<div class='point'></div>
<div class='point'></div>
<div class='point'></div> 

Комментарии:

1. Спасибо за этот ответ @zavg, но он по-прежнему перебирает массив только один раз. Если элементов «.point» больше двенадцати, он останавливается. 🙁

Ответ №2:

Я думаю, что .функция filter() лучше подходит для этого over .map() . Вы можете указать желаемую «точку», и она будет возвращать только элементы с ней. Затем вы можете использовать эти точечные данные по своему усмотрению.