系列文章
- [ CodeWar ] - 001:过滤重复字符
- [ CodeWar ] - 002:最大和最小值
- [ CodeWar ] - 003:判断质数
- [ CodeWar ] - 004:处理数组元素
- [ CodeWar ] - 005:用户分组
- [ CodeWar ] - 006:数组比对
- [ CodeWar ] - 007:找不同
- [ CodeWar ] - 008:分割字符串
- [ CodeWar ] - 009:格式化字符串
题目

需求:
- 输入的是一个数组,其元素是一个带有
name属性的object - 需要将输入的数组中的
name拼接起来 - 非末位用
, - 末位用
&
解析
这道题还是非常简单的,并且前面也做过类似的,所以就不从最简单的方案开始分析了。
其实从前面的经验看来,涉及到字符串格式化一类的操作,往往使用正则会有非常好的体验,那么这里我们看看怎么使用正则来完成这个功能。
- 首先我们可以通过
map(), join()等操作将name提取出来,并且转化成一个完整的字符串 - 这里我们通过
join(", ")来拼接,那么最终的字符串就类似(长度大于 1):a, b, c - 对于形如上述的字符串,我们可以通过
.*,匹配到最后一位前面的所有字符,再通过.*匹配到最后一个字符 - 最后将两个所匹配到的结果分组,用
&拼接在一起获得最终结果
const list = (names) =>
names
.map((name) => name.name)
.join(', ')
.replace(/(.*),(.*)$/, '$1 &$2')