2012-05-22 88 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") 
     ] 
    } 
}