У меня есть массив объектов в 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
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.