如何从包含感兴趣数组的对象数组中提取和合并多个数组?

时间:2018-11-05 06:09:22

标签: arrays typescript

我有这个模特:

export class Category {
    id: number;
    label: String;
    subCategories: SubCategory[];
}

export class SubCategory {
    id: number;
    label: String;
}

例如,我拉这个数组:

data = 
[
      {
        'id': 5,
        'label': 'Audio',
        'subCategories': [{'id': 9, 'label': 'Chinese'}, {'id': 10, 'label': 'English'}]
      },
      {
        'id': 6,
        'label': 'Video',
        'subCategories': [{'id': 11, 'label': 'Chinese'}, {'id': 12, 'label': 'English'}]
      }
];

如何提取以下数组:["Chinese", "English", "Chinese", "English"],即我想从原始数组中的每个Category中提取所有SubCategory[],抓住它们的label属性,然后有序地将它们展平为数组。

函数flat返回错误:

  

类型'SubCategory []'不存在属性'flat'。

1 个答案:

答案 0 :(得分:1)

您不需要平面函数。您可以使用本机数组方法。

data.reduce((acc: any, cur: any) => {
  return acc.concat(cur.subCategories.map((v: any) => v.label));
}, []);