在JavaScript中填充多维数组

时间:2011-09-28 21:36:30

标签: javascript jquery arrays multidimensional-array

我在JavaScript中遇到了一些问题。

我需要将数组宽度日期作为键和事件作为值。

在PHP中我会做这样的事情:

$var = new array();
Loop
$var[$date][] = $event;
End loop

你知道我的意思吗?

谢谢, 此致

3 个答案:

答案 0 :(得分:3)

在javascript中,您可以通过以下方式创建数据结构:

var events = {
    '2009-09-09': [],
    '2010-10-10': [],
    '2011-11-11': []
};

events = { ... }是javascript中的对象文字。 javscript中的对象非常类似于具有属性作为键的哈希,因此这基本上将作为键入日期的哈希。每个日期都用空数组初始化。

你可以填写像这样的事件

events[date].push(event);

如果您不提前知道日期,则可以动态填充哈希值。所以,你只需要一个空哈希:

var events = {};

然后,每次添加活动时都会检查日期键,如下所示:

if (!(date in events)) events[date] = [];
events[date].push(event);

date in events检查密钥是否存在,!否定它。因此,如果日期键不存在,则使用空数组初始化日期键。然后它正常推送该日期的事件。

答案 1 :(得分:1)

在Javascript中,键值映射由Object处理。空对象只是{}。你可以这样做(注意var是Javascript中的保留字,所以我不能完全复制你的例子):

var variable = {};
var date_list = [1,2,3];
var event_list = [4,5,6];
for (i in date_list){
    var key = date_list[i];
    var value = event_list[i];
    variable[key] = value;
}

// variable now contains: {1:4, 2:5, 3:6}

console.log(variable[1]);
// prints 4
编辑:这是基本语法。如果你想为每个键都有一个数组,只需要做类似的事情,但在event_list中使用数组而不是数字。例如:

my_dates = {'2011': [1,2,3], '2010': [6,7,8]}

答案 2 :(得分:1)

要向列表添加元素,您可以使用数组对象的push javascript方法...

events_by_date = {};
...
for (var i=0; i<events.length; i++) {
    if (!events_by_date[events[i].date]) {
        // This is the first event on this date
        // so create the list
        events_by_date[events[i].date] = [];
    }
    // Add the event to the list of events in that date
    events_by_date[events[i].date].push(events[i]);
}