-2

可能重复:
循环 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
            },
        }

非常感谢您的帮助.. 非常感谢。

4

2 回答 2

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
        });
}
于 2012-05-22T08:54:00.827 回答
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")
        ]
    }
}
于 2012-05-22T09:00:24.787 回答