У меня есть массив объектов в TypeScript (Angular), и мне нужны только имена из этого массива, если массив деталей не пуст

 [
  {name: "Joe", detail: []},
  {name: "Kevin", detail: [{salary: 2400}] },
  {name: "Peter", detail: [{salary: 2100}]}
]

Мне нужен этот результат, Кевин, Питер в одной переменной

В настоящее время я сделал это

 [
  {name: "Joe", detail: []},
  {name: "Kevin", detail: [{salary: 2400}] },
  {name: "Peter", detail: [{salary: 2100}]}
].map(function(elem){
return elem.name;}).join(",")

Может ли кто-нибудь помочь мне сделать это в Typescript или JavaScript?

-2
Imran 21 Янв 2021 в 12:12

2 ответа

Лучший ответ

Я не хочу видеть Джо в результате, потому что Joe's detail пусто. я только хочу kevin,Peter

Вы можете использовать комбинации .reduce с destructure object, как показано ниже, чтобы решить эту проблему.

var data =  [
  {name: "Joe", detail: []},
  {name: "Kevin", detail: [{salary: 2400}] },
  {name: "Peter", detail: [{salary: 2100}]}
];

var result = data.reduce((acc, {name, detail}) => {
  if(detail.length > 0) acc.push(name) // condition to add name into result   
  return acc;
}, []);
console.log(result.join(","));
1
Phong 21 Янв 2021 в 09:56
const array = [
  { name: "Joe", detail: [] },
  { name: "Kevin", detail: [{ salary: 2400 }] },
  { name: "Peter", detail: [{ salary: 2100 }] },
];

const filteredArray = array.filter((obj) => {
  return obj.detail.length > 0;
});

const result = filteredArray.map((obj) => obj.name).join(", ");
console.log(result);
1
De C 21 Янв 2021 в 09:20
65824247