2016-10-28 5 views
0

시간 간격이있는 개체 배열이 하나 있는데 숫자 0은 일요일을 나타냅니다. 특정 시간에 다른 시간 범위를 선택하는 스케줄링 페이지. 시간 값을 그룹화하려고합니다. 각 셀은 data-daydata-time 속성을 가지고 있으며, 내가 선택한 시간을 반복 오전 가지고배열의 첫 번째 및 마지막 값 그룹화 (연속 값은 첫 번째 요소와 마지막 요소가있는 그룹 임)

data-selected 속성을 가진 셀을 선택

enter image description here

처럼 내 초기 배열이

시간표 선택 아래에 기재되어 보이는 결과는 다음과 같습니다.

var selectedIntervals = {};

enter image description here

$('td[data-selected]').each(function() { 
    var a = $(this).attr('data-day'); 
    var b = $(this).attr('data-time'); 

    if(!selectedIntervals[a]) { 
     selectedIntervals[a]=[]; 
    } 
    selectedIntervals[a].push(b); 
}); 

나는

{ 
     0: [["00:00", "05:00"],["08:00", "11:00"]] 

} 

같은 출력이 도와주세요합니다.

+0

당신은 우리가 일을 할 수있는 몇 가지 코드를 게시 할 수 있습니까? –

+0

질문이 코드로 업데이트되었습니다. u는 –

+0

을 확인할 수 있습니까? 배열에 b를 밀기 전에 배열의 마지막 b가 b의 이전 값인지 여부를 확인하면 더 쉬울 것이라고 생각합니다. 그렇다면 밀어 넣고 그렇지 않으면에 새 배열을 추가합니다. 당신은 항상 선택된 범위를가집니다. – yopez83

답변

1

이 시도 :

arr = ["00:00", "01:00", "02:00", "03:00", "04:00", "05:00", "08:00", "09:00", "10:00", "11:00"]; 
output = []; 
start = arr[0]; 
for(i=1; i<arr.length; i++) { 
    if(i == arr.length-1) { 
     output.push([start, arr[i]]); 
     break; 
    } 
    if(parseInt(arr[i]) - parseInt(arr[i-1]) > 1) { 
     output.push([start, arr[i-1]]); 
     start = arr[i]; 
    } 
} 
+0

UR 응답 주셔서 감사합니다 –

0
mid = a.length 
mid=parseInt(a.length/2) 
b=[[a[0],a[mid]],[a[mid+1],a[a.length-1]]] 
console.info(b) 
1

다음은 시간 문자열의 배열로부터 간격을 만드는 함수입니다.

function makeInterval(arr) { 
    //e.g. arr = ["00:00", "01:00", "02:00", "03:00", "06:00", "10:00", "11:00"] 
    //returns [["00:00", "03:00"], ["06:00", "06:00"], ["10:00", "11:00"]] 
    var interval, result = []; 
    for (var i = 0; i < arr.length; i++) { 
     var hour = parseInt(arr[i]); 
     if (!interval || (hour != parseInt(interval[1]) + 1)) { //if first time or the hour jumps 
     interval = [arr[i], arr[i]]; //create new interval 
     result.push(interval); 
     } 
     else { 
     interval[1] = arr[i]; //update the end of interval 
     } 
    } 
    return result; 
    } 

당신은 필요한 경우 하루 걸쳐 루프를 할

makeInterval(selectedIntervals[0]); 

처럼 호출 할 수 있습니다.

+0

UR 응답 주셔서 감사합니다 –

0

당신이 얻을 elfan의 코드를 사용하여 초기 코드를 결합 :

$(function() { 
 

 
    var list = {}; 
 
    
 
    var day = 0; 
 
    list[day] = selectedSchedules(day); 
 
    day = 1; 
 
    list[day] = selectedSchedules(day); 
 
    
 
    console.log(list); 
 

 
    function selectedSchedules(day) { 
 
     var schedules = []; 
 
     var interval, hour; 
 
     $('td[data-selected][data-day=' + day + ']').each(function() { 
 
      var b = $(this).data('time'); 
 
      var current = parseInt(b); 
 
      if (!interval || (current != parseInt(interval[1]) + 1)) { 
 
       interval = [b, b]; 
 
       schedules.push(interval); 
 
      } else { 
 
       interval[1] = b; 
 
      } 
 
     }); 
 
     
 
     return schedules; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tbody> 
 
     <tr> 
 
      <td data-day="0" data-time="00:00" data-selected="true">00:00</td> 
 
      <td data-day="1" data-time="00:00" data-selected="true">00:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="01:00" data-selected="true">01:00</td> 
 
      <td data-day="1" data-time="01:00" data-selected="true">01:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="02:00" data-selected="true">02:00</td> 
 
      <td data-day="1" data-time="02:00" data-selected="true">02:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="03:00" data-selected="true">03:00</td> 
 
      <td data-day="1" data-time="03:00" data-selected="true">03:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="04:00" data-selected="true">04:00</td> 
 
      <td data-day="1" data-time="04:00" data-selected="true">04:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="05:00" data-selected="true">05:00</td> 
 
      <td data-day="1" data-time="05:00" data-selected="true">05:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="06:00">06:00</td> 
 
      <td data-day="1" data-time="06:00">06:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="07:00">07:00</td> 
 
      <td data-day="1" data-time="07:00">07:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="08:00" data-selected="true">08:00</td> 
 
      <td data-day="1" data-time="08:00">08:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="09:00" data-selected="true">09:00</td> 
 
      <td data-day="1" data-time="09:00" data-selected="true">09:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="10:00" data-selected="true">10:00</td> 
 
      <td data-day="1" data-time="10:00" data-selected="true">10:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="11:00" data-selected="true">11:00</td> 
 
      <td data-day="1" data-time="11:00" data-selected="true">11:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="12:00">12:00</td> 
 
      <td data-day="1" data-time="12:00" data-selected="true">12:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="13:00">13:00</td> 
 
      <td data-day="1" data-time="13:00">13:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="14:00">14:00</td> 
 
      <td data-day="1" data-time="14:00">14:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="15:00">15:00</td> 
 
      <td data-day="1" data-time="15:00">15:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="16:00">16:00</td> 
 
      <td data-day="1" data-time="16:00">16:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="17:00">17:00</td> 
 
      <td data-day="1" data-time="17:00">17:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="18:00">18:00</td> 
 
      <td data-day="1" data-time="18:00">18:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="19:00">19:00</td> 
 
      <td data-day="1" data-time="19:00">19:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="20:00">20:00</td> 
 
      <td data-day="1" data-time="20:00" data-selected="true">20:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="21:00">21:00</td> 
 
      <td data-day="1" data-time="21:00" data-selected="true">21:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="22:00">22:00</td> 
 
      <td data-day="1" data-time="22:00" data-selected="true">22:00</td> 
 
     </tr> 
 
     <tr> 
 
      <td data-day="0" data-time="23:00">23:00</td> 
 
      <td data-day="1" data-time="23:00" data-selected="true">23:00</td> 
 
     </tr> 
 

 
    </tbody> 
 
</table>

관련 문제