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

时间:2017-09-09 19:40:08

标签: javascript typescript typescript2.0

我使用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;
  }

问题是我尝试通过自定义键阵列在数组中添加新的objecti,这是不存在的

我也尝试了这个:

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

in循环:

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

1 个答案:

答案 0 :(得分:2)

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

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/