2012-05-22 89 views
-2

可能重複:
Safest Way to Loop Over Javascript ObjectFor循環,並在JavaScript寫

我的代碼在JavaScript這個硬編碼的片段,我想知道是否有可能使它動態的for循環。我的問題是,我不知道如何輸出JavaScript文件中的值。

function getEventData() { 
    return { 
     events: [ 
     { 
     "id":1, 
     "start": new Date(year, month, day, 12), 
     "end": new Date(year, month, day, 13, 30), 
     "title":"Check Up" 
     }, 
     { 
     "id":2, 
     "start": new Date(year, month, day, 14), 
     "end": new Date(year, month, day, 14, 45), 
     "title":"Free Trial", 
     readOnly: true 
     }, 
     { 
     "id":3, 
     "start": new Date(year, month, day + 1, 17), 
     "end": new Date(year, month, day + 1, 17, 45), 
     "title": "Consultant" 
     }, 
     { 
     "id":4, 
     "start": new Date(year, month, day - 1, 8), 
     "end": new Date(year, month, day - 1, 9, 30), 
     "title":"Check Up" 
     } 
    ] 
    }; 
} 

這就是硬編碼的JavaScript代碼。是否有可能通過列表循環並輸出值有點像這樣:

for(var i = 0; i < listEvents.lenght; i++) 
     { 
      { 
      "id": listEvents[i].Id, 
      "start": listEvents[i].Start, 
      "end": listEvents[i].End, 
      "title": listEvents[i].Title 
      }, 
     } 

非常感謝您的幫助..非常感謝。

+3

嘛 - 當然,你可以把它動態的 - 但已經的listEvents握着你的事件。爲什麼要循環訪問值並將它們再次分配給另一個對象? – madflow

回答

1

像這樣?

var result = { events: [] }; 

for(var i = 0; i < listEvents.length; i++) 
{ 
    result.events.push ({ 
     "id": listEvents[i].Id, 
     "start": listEvents[i].Start, 
     "end": listEvents[i].End, 
     "title": listEvents[i].Title 
     }); 
} 
+0

這非常有幫助謝謝! –

0

那麼它看起來像你必須創建你所有的「事件」在某個時間點,這樣做,在你是顯示沒有太大的意義,因爲你必須填寫第二路「 listEvents「數組。使得代碼的

一種方式有點整潔是使用一個構造函數,像這樣:

var Event = function(id, start, end, title) { 
    this.id = id; 
    this.start = start; 
    this.end = end; 
    this.title = title; 
    return this; 
} 

var getEventData = function() { 
    return { 
     events : [ 
      new Event("1", new Date(...), new Date(...), "title"), 
      new Event("2", new Date(...), new Date(...), "title"), 
      new Event("3", new Date(...), new Date(...), "title") 
     ] 
    } 
}