如何使用Arrow Function将字符串转换为指定格式的对象数组
实现方案
你现有代码的问题如下:
- 按
;拆分后再按,拆分只会得到二维数组,没有做扁平化处理 - 缺少将单个邮箱字符串转换为
{VALUE: 邮箱}对象格式的逻辑 - 箭头函数直接返回对象时需要用括号包裹对象,否则大括号会被识别为函数体边界
可用代码实现
方案1:先统一分隔符再拆分映射
先把字符串中所有的,替换为;,统一分隔符后一次性拆分,再映射为目标格式:
var str = 'Bob@example.com;Mark@example.com,robert@email.com'; var result = str.replace(/,/g, ';').split(';').map(email => ({ VALUE: email }));
方案2:使用flatMap处理多层拆分
如果不想修改原字符串,可以用flatMap替代普通map,自动扁平化拆分得到的子数组:
var str = 'Bob@example.com;Mark@example.com,robert@email.com'; var result = str.split(';').flatMap(item => item.split(',').map(email => ({ VALUE: email })));
两种方案得到的result都是你需要的格式:
[ {VALUE: 'Bob@example.com'}, {VALUE: 'Mark@example.com'}, {VALUE: 'robert@email.com'} ]
内容的提问来源于stack exchange,提问作者TulioVargas
相关产品推荐
相关产品推荐

