今天面试遇到了个笔试题,需求是实现字符串方法 split,笔试时候不能调试,没有考虑到符号参有可能是多个字符串形式.回来调试一番,代码如下 (十分简洁,分段逐个理解即可)
const str1 = "11&&22&&33";
const str2 = '111'
const str3 = '11&&&&'
function strSplit(str, stp='') {
if (typeof str !== 'string' || typeof stp !== 'string') throw Error('参数错误')
const result = [];
if (stp === '') {
for (let i = 0; i < str.length; i++) {
result.push(str[i])
}
} else if (str.indexOf(stp) > -1) {
result.push(str.slice(0, str.indexOf(stp)));
str = str.slice(str.indexOf(stp) + stp.length);
// console.log(result, str);
result.push(...strSplit(str, stp))
} else {
result.push(str);
}
return result.filter(ii => ii)
}
console.log("结果:", strSplit(str1, "&&"));
console.log("结果:", strSplit(str2, ''));
console.log("结果:", strSplit(str3, "&"));
有其他实现方案的欢迎讨论....后续我有其他方案也会贴代码到评论区