Typescript: скопируйте один член класса массива в один массив - PullRequest
0 голосов
/ 08 мая 2020

У меня есть класс массива DocumentItemSelection ниже: new Array<DocumentItemSelection>. Я хочу скопировать только documentNumber член класса в другой Array<string>, сохранив тот же порядок.

Каков сокращенный способ выполнения этого в Javascript / Typescript? В настоящее время используется for / foreach l oop.

export class DocumentItemSelection {
  documentNumber: string;
  documentDate: Date;
  isCurrentOwnerFlag: boolean;
}

Ответы [ 2 ]

2 голосов
/ 08 мая 2020

Вы можете использовать Array.prototype.map, чтобы сделать это за вас. Предполагая, что ваш Array<DocumentItemSelection> хранится в константе с именем data, вы просто гарантируете, что обратный вызов вернет значение из ключа documentNumber:

const documentNumbers = data.map(datum => datum.documentNumber);

TypeScript автоматически определит тип для documentNumbers массив без проблем: он будет набирать, если как Array<string> (или string[]).

См. Пример проверки концепции на TypeScript игровая площадка .

0 голосов
/ 08 мая 2020

Вы можете сделать это так:

export class AppComponent implements OnInit {
  datas = [
    {
      id:0,
      name: "first",
    },
    {
      id:1,
      name: "second",
    },
    {
      id:2,
      name: "third",
    },
  ];

  ngOnInit() {
    const arrayOfName = this.datas.map(item => item.name); // Here
    console.log('arrayOfName', arrayOfName);
  }
}

.map будет проецировать то, что вы возвращаете, поэтому просто верните желаемое значение.

Вот репродукция Stackblitz

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...