JS如何初始化复杂的数组?

How to initialize complicated array JS?

我使用 TypeScript 创建数组:

private menuItems: Menu[][];

在循环之后我尝试像这样填充:

this.menuItems[role].push(this.menu[i]);

结果我想得到以下内容:

[1 : [{obj}, {obj}], 2: [{obj}, {obj}], 3: [{obj}, {obj}]]

我做错了什么?

完整代码为:

public getMenuByRole(role: number): Menu[][] {
    for ( let i = 0; i < this.menu.length; i++ ) {
      if (this.menu[i].role === role && this.menu[i].avaliable) {
          this.getTranslateMenuItem(this.menu[i].title).subscribe((translation: string) => {
            this.menu[i].title = translation;
            this.menuItems[role].push(this.menu[i]);
          });
      }
    }
    return this.menuItems;
  }

问题是我尝试通过自定义键数组在数组中添加新的对象,那是不存在的

我也试过这个:

const obj = {};
const arr = Array();

in 循环:

arr.push(this.menu[i]);
obj[role].push(arr);

你只需要在一个数组中创建一个数组就可以得到一个二维数组。 我会使用一个对象。希望这就是您要找的

class A {
 private menu: [];

 constructor(){

 this.menu = new Array();
 for(let i = 0; i< 10; i++){
    let menuItem = new Array();
    menuItem.push(new B(i));
    menuItem.push(new B(i+1));
    this.menu.push(menuItem);
  }
  console.log(this.menu);
 }
}

class B {

 constructor(public x: int){
 }
}

new A();

https://jsfiddle.net/64r04pp2/