首页 > 解决方案 > 将 Reduce 数组映射到字符串

问题描述

我有一个数组映射函数,它可以帮助我将对象数组缩减为一个简单的字符串。

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

这会输出我没有默认的实际电子邮件地址。但是,如果我的电子邮件看起来像这样并且不仅有 default 作为 key 怎么办?

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

我将如何处理以及如何生成例如 “default:test1@test.com; home:test2@test.com; work:test3@test.com”的字符串

也只是为了清楚我的代码调用函数 formatEmails 每次我们像这样读取数据导出的一行

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

标签: angulartypescript

解决方案


只需加入对象条目

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);

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


推荐阅读