JavaScript如何将字符串数组字符拆分后用空格分隔存入新数组?
JavaScript 实现优化方案
方案1:最简原生实现(推荐)
直接利用数组和字符串的原生方法,无需手动写循环和边界判断,一行代码即可完成需求:
const actual = names.join(' ').split('');
原理说明:
- 先用
join(' ')将输入的字符串数组用空格拼接为完整字符串,你的示例输入拼接后结果为"foo bar baz" - 再用
split('')将拼接后的字符串按单个字符拆分,直接得到目标数组
如果你的字符串包含 emoji 等多字节 Unicode 字符,可以将split('')替换为Array.from()避免字符拆分错误:
const actual = Array.from(names.join(' '));
方案2:函数式flatMap实现(自定义扩展更灵活)
如果你后续需要对单个字符做额外处理,不想先拼接完整字符串,可以用flatMap实现,同样不需要手动管理结果数组和嵌套循环:
const actual = names.flatMap((name, index, arr) => index === arr.length - 1 ? [...name] : [...name, ' '] );
原理说明:flatMap会自动将每个元素返回的子数组扁平化,我们只需要判断当前元素是否为数组最后一项,非最后一项则在拆分后的字符数组末尾追加空格即可。
两种方案都完全匹配你的需求,运行测试用例可以100%通过,比你当前的嵌套循环写法更简洁易读。
内容的提问来源于stack exchange,提问作者Koray Tugay
相关产品推荐
相关产品推荐

