2016-12-08 7 views
1

jQuery/Javascript를 사용하여 시간 (2016-12-07T13 : 00 : 00)을 기준으로 아래 JSON 형식을 다시 정렬 할 수 있습니까? ISO 8601 날짜를 문자열로 정렬 때문에날짜 및 시간을 기준으로 JSON 데이터 정렬

[ 
    { 
     "id":1, 
     "start":"2016-12-07T13:00:00", 
     "subject":"test1", 
    }, 
    { 
     "id":2, 
     "start":"2016-12-07T09:00:00", 
     "subject":"test2", 
    }, 
    { 
     "id":3, 
     "start":"2016-12-07T10:00:00", 
     "subject":"test3", 
    }, 
    { 
     "id":4, 
     "start":"2016-12-07T07:00:00", 
     "subject":"test4", 
    }, 
    { 
     "id":5, 
     "start":"2016-12-07T14:00:00", 
     "subject":"test5", 
    } 
] 

답변

4

당신은 재산 start에 대한 일종의 콜백에서 를 사용할 수 있습니다.

var array = [ 
 
    { id: 1, start: "2016-12-07T13:00:00", subject: "test1" }, 
 
    { id: 2, start: "2016-12-07T09:00:00", subject: "test2" }, 
 
    { id: 3, start: "2016-12-07T10:00:00", subject: "test3" }, 
 
    { id: 4, start: "2016-12-07T07:00:00", subject: "test4" }, 
 
    { id: 5, start: "2016-12-07T14:00:00", subject: "test5" } 
 
]; 
 

 
array.sort(function (a, b) { 
 
    return a.start.localeCompare(b.start); 
 
}); 
 

 
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

0

당신은 예를 들어 Lodash을 외부 라이브러리를 사용할 수있는 경우

https://lodash.com/

변수에 JSON 문자열을 지정하고이 Y 도움을줍니다

var sort = _.sortBy(variable_name, "start") 

희망을 시도 우.

0

예, 자바 스크립트 배열 정렬 방법 (http://www.w3schools.com/jsref/jsref_sort.asp)을 사용합니다.

배열을 변수에 할당 한 다음 sort 메서드를 호출하도록 정의하면 정렬 메서드에 비교 세부 정보를 전달할 수 있습니다.

var aryData = [{"id":1 
        ,"start":"2016-12-07T13:00:00" 
        ,"subject":"test1" 
        },{ 
        "id":2 
        ,"start":"2016-12-07T09:00:00" 
        ,"subject":"test2" 
        },{ 
        "id":3 
        ,"start":"2016-12-07T10:00:00" 
        ,"subject":"test3" 
        },{ 
        "id":4 
        ,"start":"2016-12-07T07:00:00" 
        ,"subject":"test4" 
        },{ 
        "id":5 
        ,"start":"2016-12-07T14:00:00" 
        ,"subject":"test5" 
        }]; 
    aryData.sort(function(a, b) { 
     var dtA = new Date(a['start']) 
      ,dtB = new Date(b['start']); 
     return (dtA.getTime() - dtB.getTime()); 
    }); 
0

, 어쩌면 도움이

var aryData =[ 
 
    { 
 
     "id":1, 
 
     "start":"2016-12-07T13:00:00", 
 
     "subject":"test1", 
 
    }, 
 
    { 
 
     "id":2, 
 
     "start":"2016-12-07T09:00:00", 
 
     "subject":"test2", 
 
    }, 
 
    { 
 
     "id":3, 
 
     "start":"2016-12-07T10:00:00", 
 
     "subject":"test3", 
 
    }, 
 
    { 
 
     "id":4, 
 
     "start":"2016-12-07T07:00:00", 
 
     "subject":"test4", 
 
    }, 
 
    { 
 
     "id":5, 
 
     "start":"2016-12-07T14:00:00", 
 
     "subject":"test5", 
 
    } 
 
]; 
 
    function comp(a, b) { 
 
     return new Date(a.start).getTime() - new Date(b.start).getTime(); 
 
    } 
 
    aryData.sort(comp); 
 

 
console.log(aryData);

0

//put to variable 
 
var db = [ 
 
    { 
 
     "id":1, 
 
     "start":"2016-12-07T13:00:00", 
 
     "subject":"test1", 
 
    }, 
 
    { 
 
     "id":2, 
 
     "start":"2016-12-07T09:00:00", 
 
     "subject":"test2", 
 
    }, 
 
    { 
 
     "id":3, 
 
     "start":"2016-12-07T10:00:00", 
 
     "subject":"test3", 
 
    }, 
 
    { 
 
     "id":4, 
 
     "start":"2016-12-07T07:00:00", 
 
     "subject":"test4", 
 
    }, 
 
    { 
 
     "id":5, 
 
     "start":"2016-12-07T14:00:00", 
 
     "subject":"test5", 
 
    } 
 
]; 
 

 
//use .sort() 
 
db.sort(
 
    function(a,b){ 
 
    
 
    //use new Date parse string to date type 
 
    //convert date to number use Date.parse() 
 
    //format function(a,b) { return a-b; } 
 
    
 
    return Date.parse(new Date(a.start)) - Date.parse(new Date(b.start)); 
 
    } 
 
); 
 
console.log(db)

을이 시도
관련 문제