Получить массив свойства объекта в массиве объектов

у меня есть string [] массив Arr содержащий объекты:

0: {PunktID: 19, PunktName: 'NAME1', Description: 'DESC1'}
1: {PunktID: 20, PunktName: 'NAME1', Description: 'DESC1'}
2: {PunktID: 21, PunktName: 'NAME1', Description: 'DESC1'}

Я хочу получить из него массив свойства PunktID

[19,20,21]

Пробовал сделать через Object.value, но здесь вложенность второго уровня. Как можно по другому такое сделать?


Ответы (2 шт):

Автор решения: Alex Libre

Не совсем понятны изначальные условия. Если речь про исходный массив объектов вида:

const arr = [
  {0: {PunktID: 19, PunktName: 'NAME1', Description: 'DESC1'}}, 
  {1: {PunktID: 20, PunktName: 'NAME1', Description: 'DESC1'}}, 
  {2: {PunktID: 21, PunktName: 'NAME1', Description: 'DESC1'}}
];

То можно пройтись через map

console.log(arr.map((item, i) => item[i].PunktID))  //[19,20,21]
→ Ссылка
Автор решения: SwaD

Ваш массив на самом деле должен выглядеть вот так:

const arr = [
  {PunktID: 19, PunktName: 'NAME1', Description: 'DESC1'},
  {PunktID: 20, PunktName: 'NAME1', Description: 'DESC1'},
  {PunktID: 21, PunktName: 'NAME1', Description: 'DESC1'}
];

Это массив объектов. Цифры вам дорисовывает браузер в консоли разработчика. Ниже 2 примера, как достать значения ключа PunktID

const arr = [
  {PunktID: 19, PunktName: 'NAME1', Description: 'DESC1'},
  {PunktID: 20, PunktName: 'NAME1', Description: 'DESC1'},
  {PunktID: 21, PunktName: 'NAME1', Description: 'DESC1'}
];

function ids(origin) {
  const res = [];
  origin.forEach(item => res.push(item.PunktID));
  return res;
}

function idsm(origin) {
  return origin.map(item => item.PunktID);
}

console.log(ids(arr));
console.log(idsm(arr));

P.S. Из комментариев:

arr: string[] это аннотация typeScript, которая говорит, что переменная/ключ arr имеет тип данных массив [] строк string. Подробнее можно почитать на официальном сайте

→ Ссылка