0

我可以创建一个动态对象,如下所示:

var year=2103;
var month=9;

var selected={};
selected[year][month]=true;

但是下面给出了一个未定义的对象错误,我认为是因为第一个键尚未创建并且 Javascript 不会自动执行此操作。

selected[year]=true;
4

2 回答 2

5

但是下面给出了一个未定义的对象错误,我认为是因为第一个键尚未创建并且 Javascript 不会自动执行此操作。

是的,您必须创建它:

var year = 2103;
var month = 9;
var selected = {};
selected[year] = {};
selected[year][month] = true;

如果您不确定对象是否已经存在,并且不想覆盖它:

selected[year] = selected[year] || {};

作为填充对象的快捷方式,如果缺少并在一步中分配月份键:

(selected[year]||(selected[year]={}))[month] = true;
于 2013-09-03T18:47:03.313 回答
0

你只需要添加一个步骤:selected[year]=[];

var year=2103;
var month=9;

var selected=[];

selected[year]=[];

selected[year][month]=true;
于 2013-09-03T19:24:24.877 回答