You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JavaScript将字母数组按空字符串分隔转换为单词数组

问题说明

现有JavaScript字符数组,数组内的单字母为单词组成部分,空字符串''是不同单词的分隔标记,需要将其处理为拼接完成的单词数组:

  • 输入数组:
const inputArr = [
'b', 'a', 'k', 'e', '',
'c', 'a', 'k', 'e', '',
'e', 'a', 't'
];
  • 期望输出:['bake','cake','eat']
  • 原有错误实现:直接调用join('')拼接所有元素
const result = inputArr.join('');
console.log(result); // 输出"bakecakeeat",所有单词连为一体无法拆分

错误原因

join('')方法会将数组中所有元素直接无分隔拼接,空字符串''在拼接时不会产生任何内容,相当于直接丢弃了原数组中空字符串作为单词分隔符的标记作用,最终只会得到一整段连续字符串,无法拆分出独立单词。


正确实现方案

提供两种简单易读的实现方式,可根据场景选择:

方案1:reduce遍历累加(逻辑直观,无兼容问题)

核心逻辑是遍历数组逐字符拼接,遇到空字符串就新增一个单词位:

const inputArr = [
'b', 'a', 'k', 'e', '',
'c', 'a', 'k', 'e', '',
'e', 'a', 't'
];

const result = inputArr.reduce((wordList, char) => {
  // 遇到空串,新增空单词位准备拼接下一个单词
  if (char === '') {
    wordList.push('');
  } else {
    // 非空字符拼到当前最后一个单词的末尾
    wordList[wordList.length - 1] += char;
  }
  return wordList;
}, ['']); // 初始化第一个单词位为空字符串

console.log(result); // 输出 ['bake', 'cake', 'eat']

如果数组末尾存在多余空串,会导致结果最后多一个空字符串元素,只需要在返回前加一步.filter(word => word !== '')即可过滤。

方案2:分隔符转换快速拆分(代码更简短)

核心逻辑是先用临时分隔符拼接数组,再以空串对应的双分隔符位置拆分,最后去掉单字符之间的临时分隔符:

const inputArr = [
'b', 'a', 'k', 'e', '',
'c', 'a', 'k', 'e', '',
'e', 'a', 't'
];

const result = inputArr
  .join('|') // 用不会出现在内容里的|做临时分隔符,得到"b|a|k|e||c|a|k|e||e|a|t"
  .split('||') // 按空串对应的双|拆分,得到["b|a|k|e", "c|a|k|e", "e|a|t"]
  .map(word => word.replaceAll('|', '')); // 去掉单词内部的|分隔符

console.log(result); // 输出 ['bake', 'cake', 'eat']

内容的提问来源于stack exchange,提问作者Sudheer Kandula

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 08:57:21