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

如何拆分连字符分隔字符串并生成由累积前缀组成的数组

现有实现合理性评估

你写的代码是完全合理的:

  • 逻辑清晰易懂,每一步操作都很明确
  • 时间复杂度为O(n)(n为分隔后的元素数量),空间复杂度为O(n),属于最优的时间复杂度等级,即使处理很长的字符串也不会有性能问题
  • 没有多余冗余操作,常规业务场景下可以直接正常使用

更简洁的实现方式

下面提供两种常见的简化写法,你可以根据场景选择:

1. reduce 实现(性能和原实现一致)

和你原有逻辑完全等价,只是用数组reduce方法简化了临时变量的声明,代码更简洁:

const str = '1-2-3';
const arr = str.split('-').reduce((result, current, idx) => {
  result.push(idx === 0 ? current : `${result[idx-1]}-${current}`);
  return result;
}, []);

2. Array.from 实现(可读性更强,适合短字符串场景)

代码更短可读性更高,缺点是每次拼接都会做一次slice和join,时间复杂度为O(n²),仅适合长度不大的常规业务场景:

const str = '1-2-3';
const parts = str.split('-');
const arr = Array.from({length: parts.length}, (_, i) => parts.slice(0, i+1).join('-'));

边界情况补充

如果需要兼容空字符串输入的场景,可以提前加一层判断,避免输出['']这类不符合预期的结果:

const getPrefixArr = (str) => {
  if (!str) return [];
  // 写入你选择的实现逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:57:03