与foreach javascript中的下一个元素进行比较

时间:2017-04-17 01:16:08

标签: javascript jquery html json

在我的项目中,我必须检查时间表的可用时间,以便插入一个应该包含两个值作为文本的按钮。这一天从8点开始,到18点结束,每天都有会话。我有一个包含当天所有会话的JSON数组,每个会话都有一个开始时间和一个结束时间,所以当我找到任何时间空间时,我想在我的html上添加一个按钮。这个按钮将有一些文本(例如:8-> 10)和onClick方法,它将带我到另一个函数。这是一些代码,我希望它可以使我的问题更容易理解:

function evenement(id)
{
  $.ajax({
        url : "<?php echo site_url('index.php/salle/evenement/')?>/" + id,
        type: "GET",
        dataType: "JSON",
        success : function(data)
        {     var start_date =8;
              var end_date =18;
              var buttons ="";
            data.forEach(function(element, index, array)
            {
                for (var i = start_date; i < end_date; i++) {
                      if (element.date_debut == i) {i=element.date_fin;}
                      if (element.date_debut != i) {buttons +="<button>"+i+"->"+element[index+1].date_fin+"</button>";}
                }

            }

            );
             $('.modal-title').text('Disponibilité');
        $('#corps').html(buttons);
      $('#groupe_modal').modal('show');

        },
      });

}

我的问题是,当我正在处理当前元素时,我无法访问下一个元素。数据是我在ajax函数中收到的参数,这段代码只是让我自己清楚,我在项目的不同部分写了它。谢谢!

1 个答案:

答案 0 :(得分:2)

forEach 回调函数有3个参数,function(element, index, array)

`element`  The current element being processed in the array.
`index`    The index of the current element being processed in the array.
`array`    The array that forEach() is being applied to.

因此,如果您将第二个参数添加到您的函数中,这将是索引,那么您可以轻松访问下一个data[index + 1](或之前的data[index - 1])项目

  

在使用 时,不要忘记正确检查您是不是最后一个(上一个)元素

根据问题编辑

进行了更新

如果您将第二个第三个​​参数添加到您的函数中,indexarray forEach()被应用到,那么您可以访问下一个(或之前的)项目如下:

array[index + 1]     //next
array[index - 1]     //previous
function evenement(id)
{
    $.ajax({
        url : "<?php echo site_url('index.php/salle/evenement/')?>/" + id,
        type: "GET",
        dataType: "JSON",
        success : function(data)
        {   
            var start_date =8;
            var end_date =18;
            var buttons ="";
            data.forEach(function(element, index, array)
            {
                for (var i = start_date; i < end_date; i++) {
                      if (element.date_debut == i) {i=element.date_fin;}
                      if (element.date_debut != i) {buttons +="<button>"+i+"->"+array[index+1].date_fin+"</button>";}
                }
            });
            $('.modal-title').text('Disponibilité');
            $('#corps').html(buttons);
            $('#groupe_modal').modal('show');
        }
    });
}