将Reduce数组映射到字符串

时间:2019-06-14 16:32:25

标签: angular typescript

我有一个数组映射功能,可以帮助我将对象数组简化为一个简单的字符串。

const formatEmails: (arr: { "default" : string }[]) => string = (arr: { "default" : string }[]) => 
arr.map(e => e["default"]).reduce((e, i) => e + i + "; ", "");

这会向我输出实际的电子邮件地址,而不包含默认值。但是,如果我的电子邮件看起来像这样并且不仅具有默认值作为密钥怎么办?

 person_emails: [{ "default": 'test1@test.com' }, { "home": 'test2@test.com' }, { "work": 'test3@test.com' }]

我将如何处理以及如何生成例如字符串 “默认:test1@test.com;家庭:test2@test.com;工作:test3@test.com”

也要清楚一点,每次我们读取数据导出行时,我的代码都会调用formatFormatEmails函数

args.rowData["person_emails"] = formatEmails(args.rowData["person_emails"]);

1 个答案:

答案 0 :(得分:1)

只需加入对象条目

const person_emails = [{ "default": 'test1@test.com' }, { "home": 'test2@test.com' }, { "work": 'test3@test.com' }];
const res = person_emails.map(e => 
  Object.entries(e).map(en => en.join(':')).join('; ')
).join('; ');
console.log(res);

以上同样适用于单个对象中的多对