2016-07-08 3 views
0

의 배열 나는 아래 다음과 같은 기능이 있습니다 :정렬 객체

function GeraHorario(inicio,fim,tempoConsulta) 
    { 
    var agenda = [] 
    var data = new Date(2016, 0, 1, inicio, 0, 0, 0) 
    var horainicial = inicio 
    while (data.getDate() == 1) { 
     if(data.getHours() < fim) 
     { 
      var horario = data.toLocaleTimeString('pt-BR'); 
      data.setMinutes(data.getMinutes()+tempoConsulta); 
      var d1 = horario.replace(/(.*)\D\d+/, '$1'); 
      agenda.push(d1); 
     }else{break} 
    } 
    console.log(agenda) 
    return agenda 
    } 

이 기능은 내가 배열지도를하고는 다음과 같습니다이 배열

["09:00", "09:10", "09:20", "09:30", "09:40", "09:50", "10:00", "10:10", "10:20", "10:30", "10:40", "10:50", "11:00", "11:10", "11:20", "11:30", "11:40", "11:50", "12:00", "12:10", "12:20", "12:30", "12:40", "12:50", "13:00", "13:10", "13:20", "13:30", "13:40", "13:50", "14:00", "14:10", "14:20", "14:30", "14:40", "14:50", "15:00", "15:10", "15:20", "15:30", "15:40", "15:50", "16:00", "16:10", "16:20", "16:30", "16:40", "16:50", "17:00", "17:10", "17:20", "17:30", "17:40", "17:50", "18:00", "18:10", "18:20", "18:30", "18:40", "18:50"] 

를 생성합니다.

function GroupHoras(array) 
    { 
    var result = array.reduce(function(map, hourStr) { 
     var hour = hourStr.charAt(0) + hourStr.charAt(1); 
     if (!map.hasOwnProperty(hour)) map[hour] = []; 
     map[hour].push(hourStr); 
     return map; 
    }, {}); 

    return result 
    } 

그것은 당신이 볼 수 있듯이, 값 09이 처음에 있어야

Object {10: Array[6], 11: Array[6], 12: Array[6], 13: Array[6], 14: Array[6], 15: Array[6], 16: Array[6], 17: Array[6], 18: Array[6], 09: Array[6]} 

그러나지도 후 모양, 끝으로 이지도에서 사용되는 기능입니다 이동 오브젝트의 배열의 어떻게이 주제를 점점 더 중요하게 만들 수 있습니까?

+0

당신이 .sort을 (시도 적이) 개체에 :

그러나이 문제를 해결 얻을 수있는 방법이 있습니다,이 질문에 대한 대답은 당신이 JSON.sringify()가 적절한 순서를 확인하는 데 사용할 수있는 방법을 보여줍니다 ? – John

+5

는 객체 (지도/연관 배열 - 당신이 전화를 원하는)은 같은 어떤 순서가 없습니다. – Jamiec

+0

당신은 (배열이 순서대로) 객체의 배열을 사용하거나 정렬되지 않은 객체의 속성을 나타내는 주문 키의 배열을 유지하기 위해 하나 필요 해요. –

답변

2

당신은 자바 스크립트 객체의 수는 없다 "순서"속성.

아마도 좋은 해결 방법은 저장하는 것입니다 당신이 그들을 표시 및 주문의 목적을 위해 그것을 사용하고자하는 순서대로 속성 이름을 포함하는 배열 :

var order = ["09","10","11"] 
 
var obj = {"10":"ten","11":"Eleven", "09": "Nine"}; 
 
for(var i=0;i<order.length;i++){ 
 
    var prop = order[i]; 
 
    console.log(prop,obj[prop]); 
 
} 
 

0

자바 스크립트 객체 배열은 정렬 가능한 객체가 아닙니다. 모든 브라우저는 동일한 데이터 세트를 사용하는 경우에도 다른 순서로 표시합니다.

당신이 할 수있는 것은 2 차원 JS 배열을 만드는 것이고 첫 번째 인덱스 요소는 시간이고 두 번째 인덱스는 그 시간에 항목을 유지하는 1 차원 배열이 될 것입니다.

그래서 추가로 두 번째 함수 당신은 JS 객체 배열을 사용하는 대신 2 차원 배열을 자신의 정렬 기능을 만들려면 다음 코드를 사용하여 얻을 수 있어야합니다.

var arr = new Array(); 
for(var hour in map){ 
    var arr2 = new Array(); 
    arr2.push(hour, map[hour]); 

    arr.push(arr2); 
} 

arr.sort();//After this you will have a sorted array