我只想以这种方式获取数据:
var _2dimen = {};
_2dimen['window1']['panel1'] = '2010-10-01'
_2dimen['window1']['panel2'] = '2010-10-01'
...
_2dimen['window3']['panel1'] = '2010-10-01'
哪个窗口和面板编号是动态的。这意味着我可以使用以下模式: 我的意思是:在我的情况下,窗口和面板的变量是动态创建的,窗口可能是window1或window2 ......面板可能是panel2,panel4。
var window = windowNumber, panel= panelNumber;
_2dimen[window][panel] = 'some date here';
如何构造代码以分配和编辑值?
我写的代码正是我认为的可能,它没有用!! _2dimen [window] ='数据'正常,我添加 [面板]
_2dimen[window][panel] = 'data' the firebug prompts me that :
_2dimen[window] is undefined
_2dimen[window][panel] = date;
非常感谢!
答案 0 :(得分:4)
JS中有些人称之为“关联数组”只是对象:
var twoD = { window1: {
panel1: '2010-10-01',
panel2: '2010-10-02',
...
},
window3: {
panel1: '2010-12-01',
...
}
};
如果您实际上正在命名诸如'window1'和'panel2'之类的索引,那么更好的方法是使用数组。这样,您可以循环显示面板和窗口,但仍然可以在顶级对象和窗口上设置其他属性。
var twoD = { windows: [
{ panels: ['2010-10-01', '2010-10-02', ...
...
// window3
{ panels: ['2010-12-01']}
],
foo: 'bar'
};
...
twoD.windows[0].panels[1] // '2010-10-02'
请记住,标识符不能以数字开头。
如果在Windows上设置的面板跳过某些索引,您也可以这样做。请注意,您无法设置未定义值的属性。 _2dimen[window][panel]={}
未定义时_2dimen[window]
失败。你需要测试&在访问次要索引处的元素之前,在主索引处设置元素。
function TwoD() {
this.windows = [];
}
TwoD.prototype.window = function(i) {
if (! this.windows[i]) {
this.windows[i] = {panels: []};
}
return this.windows[i];
};
...
var wall = new TwoD();
wall.window(2).panels[1] = '2010-12-02';
这非常接近您当前的实现,但具有允许迭代窗口和放大器的优点。设置其他属性时的面板。