我只想要这样的数据:
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] = 'data' 工作正常 我添加了 [panel]
_2dimen[window][panel] = 'data' the firebug prompts me that :
_2dimen[window] is undefined
_2dimen[window][panel] = date;
非常感谢!
最佳答案
在 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]
未定义时,_2dimen[window][panel]={}
失败。在访问次要索引处的元素之前,您需要测试并设置主要索引处的元素。
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';
这与您当前的实现非常接近,但具有在设置其他属性时允许在窗口和面板上进行迭代的优势。
关于javascript - 是否可以在 javascript 中制作二维关联数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4534237/