首页 > 解决方案 > 如何将新项目推送到angular7中的嵌套数组

问题描述

我有一个嵌套数组,我想将新项目推送到嵌套数组。

FoodNode= [
  {
    name: 'Fruit',
    parent:'root',
    children: [
      {name: 'Apple',parent:'Fruit'},
      {name: 'Banana',parent:'Fruit'},
      {name: 'Fruit loops',parent:'Fruit'},
    ]
  }, {
    name: 'Vegetables',
    parent:'root',
    children: [
      {
        name: 'Green',
        parent:'Vegetables',
        children: [

        ]
      }, {
        name: 'Orange',
        parent:'Vegetables',
        children: [         
        ]
      },
    ]
  },
];

现在我想将它添加到绿色的孩子。

   this.fileElements.filter(res => {
      if (res.parent === 'root') {
        this.fileList.push(res);
      } else {
          this.fileList.filter((search, index) => {
          if (search.name === res.parent) {
            console.log(typeof search.children === 'undefined');
            search.children.push(res);
          }
        });
      }
    });

此代码仅将项目推送到 1 级(如直接子级),基于父值我将元素推送给子级。我正在使用 mat-tree 所以我需要相同的结构。请帮助

标签: javascripttypescriptangular7

解决方案


希望能帮助到你。

this.FoodNode.forEach(e => {
   if (e.name == "Vegetables") {
   let abcd = e.children;
   abcd.forEach(e1 => {
   if (e1.name === "Green") {
      let data = [
          { name: "Apple" },
          { name: "Banana" },
          { name: "Fruit loops" }
      ];
      data.forEach(e2 => {
      e1["children"].push(e2);
    });
   }
});
}
});

推荐阅读