【问题标题】:Filling multidimensionnal array in JavaScript在 JavaScript 中填充多维数组
【发布时间】:2011-11-27 05:50:00
【问题描述】:

我的 JavaScript 有点问题。

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

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

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

你知道我的意思吗?

谢谢, 问候

【问题讨论】:

  • 不,我真的不明白你的意思。但我猜测并发布了答案。如果这不能回答您的问题,请在评论中进一步解释您的问题。

标签: javascript jquery arrays multidimensional-array


【解决方案1】:

在 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 检查密钥是否存在,! 否定它。所以如果日期键存在,它会用一个空数组初始化日期键。然后它会像往常一样推送该日期的事件。

【讨论】:

  • 感谢您的回答。为了更好地解释我:我正在循环获取对象中的日期。我想用多个事件填充所有日期,也不知道如何在不指定任何键的情况下将元素添加到数组中,例如 PHP $events[$date][] = $event;
  • @ben heh 我想......但我的一部分想知道我是否完全错过了问题的重点!那些日子之一:)
  • @PierreLechelle,我更新了我的答案以反映这一点。这对你有用吗?
  • @PierreLechelle,我想我终于明白了你想要什么,并再次重写了我的答案。让我知道这是否是您想要的。
  • 本!你真棒 !感谢您的时间和您的许多重写!我成功了!再次感谢!
【解决方案2】:

要将元素添加到列表中,您可以使用数组对象的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]);
}

【讨论】:

    【解决方案3】:

    在 Javascript 中,键值映射由 Objects 处理。一个空对象就是{}。你可以做这样的事情(注意 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]}
    

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 1970-01-01
      • 2012-11-21
      • 2018-01-31
      • 2020-09-27
      • 2011-01-11
      相关资源
      最近更新 更多