angular извлечь поле массива объекта - PullRequest
0 голосов
/ 27 мая 2020

Я чего-то не понимаю и мне нужны пояснения, пожалуйста!

У меня есть таблица данных и выбор строк, генерируемых в моем .ts массиве объекта Operation. вот мой объектный класс:

export class Operation {
  id: number;
  name: string;
}

это объявление массива:

selectedOperations: Operation[]; 

когда я вхожу в консоль перед извлечением идентификаторов, у меня есть это:

this.selectedOperations = {"selected":[{"id":1,"name":"My name 1"},{"id":3,"name":"My name 3"}]}

и когда я хочу извлечь идентификаторы с помощью этого:

let ids = this.selectedOperations.map(o => o.id);

У меня исключение =>

this.selectedOperations.map is not a function

Это не первый раз, когда у меня возникает эта проблема, и я ' хочу понять почему. Я искал несколько причин и нашел различия между Array и object []? Я думаю, что это не совсем массив, потому что перед массивом стоит {"selected": ...

Может ли кто-нибудь рассказать мне об этом и помочь мне извлечь идентификаторы?

большое спасибо!

Ответы [ 2 ]

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

{"selected": [{"id": 1, "name": "My name 1"}, {"id": 3, "name": "My name 3"}]} => это объекта типа, тогда как ваше объявление массива выглядит следующим образом selectedOperations: Operation [];

Вы либо напрямую назначаете массив своей переменной:

this.selectedOperations = [{"id":1,"name":"My name 1"},{"id":3,"name":"My name 3"}];

Или вы можете изменить тип переменной на any или object:

selectedOperations: any;

this.selectedOperations = {"selected":[{"id":1,"name":"My name 1"},{"id":3,"name":"My name 3"}]}

const ids = this.selectedOperations.selected.map(o => o.id);

this.selectedOperations.map не является ошибкой функции, вызванной инициализацией, функция карты зарезервирована для массивов, поэтому выдает ошибку, когда вы пытаетесь использовать ее для объекта type variable.

Кстати, я бы порекомендовал первый подход, объявление переменной как any или object противоречит целям TypeScript.

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

Вам необходимо внести некоторые улучшения в код. Чтобы получить ids, вам нужно добавить selected к this.selectedOperations. См. Ниже.

let ids = this.selectedOperations.selected.map(o => o.id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...