javascript - 是否可以在 javascript 中制作二维关联数组?

标签 javascript arrays

我只想要这样的数据:

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/

相关文章:

mysql - 使用 Node 和 Handlebars 动态填充下拉列表的问题

c# - 访问 C# float[] 作为 byte[]

javascript - 数据错误() : "TypeError: Cannot read property ' length' of undefined"(Vue. js)

javascript - 谷歌应用程序脚本计算单元格中的字符

javascript - 在函数内调用 div

javascript - 使用 javascript 在 div 中显示图像?

arrays - 一个文本文件中的两个数组

arrays - 从其他数组更新哈希值数组

javascript - 使用 rhino 运行 jshint

javascript - 我如何向 jquery 事件添加函数