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

如何不使用内置函数实现自定义.split方法?排查代码问题

自行实现.split方法的问题修复

你的代码存在的核心问题

  • 数组被强制转为字符串:你用arrSent += str[i]的方式拼接内容,数组和字符串相加时会自动转换为字符串类型,所以最终返回的是字符串而非数组。
  • 未处理多字符分隔符:你的分隔符是. (两个字符),但代码中仅用单个字符str[i]与分隔符比较,永远无法匹配到分隔符,自然不会触发拆分逻辑,只会把所有字符拼接成一个字符串。

修正后的实现代码

function split(str, splitter) {
    const result = [];
    let currentPart = '';
    const splitterLength = splitter.length;

    for (let i = 0; i < str.length; i++) {
        // 检查当前位置开始的子串是否匹配分隔符
        let match = true;
        for (let j = 0; j < splitterLength; j++) {
            if (str[i + j] !== splitter[j]) {
                match = false;
                break;
            }
        }

        if (match) {
            // 匹配到分隔符,将当前片段存入结果数组
            result.push(currentPart);
            // 跳过分隔符的长度,避免重复处理
            i += splitterLength - 1;
            // 重置当前片段
            currentPart = '';
        } else {
            // 未匹配到,将当前字符加入片段
            currentPart += str[i];
        }
    }

    // 加入最后一段未被分隔的内容
    result.push(currentPart);
    return result;
}

// 测试示例
console.log(split('word wooord wooooooooord wooooooord. wooooooooord woooooord woooord wooooooooord', '. '));

代码逻辑说明

  • 初始化result数组存储拆分结果,currentPart用于临时拼接当前片段
  • 通过内层循环检查多字符分隔符的匹配:从当前索引i开始,逐一比对分隔符的每个字符
  • 匹配到分隔符时,将currentPart存入数组,跳过分隔符长度的索引,重置currentPart
  • 遍历结束后,将最后一段未被分隔的内容加入结果数组,确保所有内容都被处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:01:07