js实现split
实现 split 方法的基本思路
JavaScript 的 split 方法用于将字符串分割成数组,基于指定的分隔符。以下是实现自定义 split 方法的核心逻辑:
function customSplit(str, separator, limit) {
const result = [];
let current = '';
for (let i = 0; i < str.length; i++) {
if (separator === '' && current !== '') {
result.push(current);
current = '';
}
if (str.slice(i, i + separator.length) === separator) {
result.push(current);
current = '';
i += separator.length - 1;
} else {
current += str[i];
}
}
if (current !== '') result.push(current);
return limit ? result.slice(0, limit) : result;
}
处理空分隔符的特殊情况
当分隔符为空字符串时,每个字符都应作为独立的数组元素:

if (separator === '') {
return Array.from(str).slice(0, limit);
}
实现 limit 参数功能
limit 参数控制返回数组的最大长度。在循环中添加检查:

if (limit && result.length >= limit) {
break;
}
完整实现代码
结合上述逻辑的完整实现如下:
function customSplit(str, separator, limit) {
if (separator === undefined) return [str];
if (separator === '') return limit ? Array.from(str).slice(0, limit) : Array.from(str);
const result = [];
let current = '';
for (let i = 0; i < str.length; i++) {
const match = str.slice(i, i + separator.length);
if (match === separator) {
result.push(current);
current = '';
i += separator.length - 1;
if (limit && result.length >= limit) break;
} else {
current += str[i];
}
}
if (current !== '') result.push(current);
return limit ? result.slice(0, limit) : result;
}
边界条件测试案例
验证实现的正确性需测试以下场景:
- 空字符串输入
- 未提供分隔符
- 分隔符为多字符
- 限制结果数组长度
console.log(customSplit('a,b,c', ',')); // ['a', 'b', 'c']
console.log(customSplit('a,b,c', ',', 2)); // ['a', 'b']
console.log(customSplit('abc', '')); // ['a', 'b', 'c']
console.log(customSplit('a,,b', ',')); // ['a', '', 'b']






