2015-10-12 41 views
0

我正在使用ajax,當我得到我的響應(這是一個對象)時,它給了我奇怪的輸出。如何從對象中輸出數組而不對其進行排序

所以, 「成功」 的方法裏面,我試過的console.log(RES),這是我所:

Object {new_month: "Semptember", days_calender: Object} 

然後,我嘗試的console.log(RES [ 'days_calender'] );這是輸出:

Object {10: "n", 11: "n", 12: "n", 13: "n", 14: "n", 15: "n", 16: "n", 17: "n", 18: "n", 19: "n", 20: "n", 21: "n", 22: "n", 23: "n", 24: "n", 25: "n", 26: "n", 27: "n", 28: "n", 29: "n", 30: "n", 01: "n", 02: "n", 03: "n", 04: "n", 05: "n"…} 

的問題是我需要使用方法,每()創建元素,並將其附加到一個div #calender,但是當我做第一種情況下得到了「10」時,第二個「11」,等等。

有沒有辦法不讓我的對象排序?

dataType: 'json', 
      success: function(res){ 
       console.log(res); 
       console.log(res['days_calender']); 
       $.each(res['days_calender'], function(key, val) { 
        updateCalender(key, val); 
       }); 

我updateCalender功能:

function updateCalender(day, activity) 
{ 
    var li = document.createElement("li"); 
    $('#calender ul').append(li); 

    var a = document.createElement("a"); 
    a.setAttribute('href', '/activities/'+day); 
    a.innerHTML = day; 
    li.appendChild(a); 
} 

編輯:

這就是它看起來像在第一:

Array 
(
    [new_month] => September 
    [days_calender] => Array 
     (
      [01] => n 
      [02] => n 
      [03] => n 
      [04] => n 
      [05] => y 
      [06] => y 
      [07] => n 
      [08] => n 
      [09] => y 
      [10] => n 
      [11] => n 
      [12] => n 
      [13] => n 
      [14] => n 
      [15] => n 
      [16] => n 
      [17] => n 
      [18] => n 
      [19] => n 
      [20] => n 
      [21] => n 
      [22] => n 
      [23] => n 
      [24] => n 
      [25] => n 
      [26] => n 
      [27] => n 
      [28] => n 
      [29] => n 
      [30] => n 
     ) 

) 
+0

「沒有得到我的對象排序?」 :這取決於ajax請求的輸出。你能給出簡單的輸出(不是來自控制檯的輸出) – itssajan

+0

你的響應數組或數據是排序的!你可以做出反應未分類或從服務器方法,然後做出輸出! – mohsen

+0

在普通輸出本身是排序的,那麼你如何期望在前端未排序??。如果你是從數據庫中檢索這個,請不要使用任何排序功能 – itssajan

回答

1

可以用數字鍵排序

var res = {'days_calender':{10: "n", 11: "n", 12: "n", 13: "n", 14: "n", 15: "n", 16: "n", 17: "n", 18: "n", 19: "n", 20: "n", 21: "n", 22: "n", 23: "n", 24: "n", 25: "n", 26: "n", 27: "n", 28: "n", 29: "n", 30: "n", 01: "n", 02: "n", 03: "n", 04: "n", 05: "n"}}; 

var array = $.map(res['days_calender'], function(value, index) { // convert to array of objects 
    return {day:index, activity:value}; 
}); 

array.sort(function(a,b){ // sort numerically by day 
    return parseInt(a.day) - parseInt(b.day); 
}); 

$.each(array, function(key, val) { 
    updateCalender(val.day, val.activity); 
}); 

JSFiddle demo

相關問題