【发布时间】:2015-05-26 08:28:36
【问题描述】:
为了更好地理解函数,我被建议重构 String.prototype.split() 方法。这不是上学的,我是自学的。我认为这很简单,但四个小时后,我很沮丧,因为我无法让它发挥作用。到目前为止,这是我所拥有的:
var myString = "this is a sentence";
var split = function(string, splitParameter) {
var splitArray = [];
var stringElement = "";
var splitter = "";
var j = 0;
for (var i = 0; i < string.length; i++) {
if (string[i] !== splitParameter) {
stringElement += string[i];
splitArray[j] = stringElement;
}else {
j++;
splitter += string[i];
}
return splitArray;
}
console.log(split(myString," "));
我无法弄清楚如何处理 splitParameter 参数。当我在上面粘贴的代码中传入“”时,我得到:
["this", "thisis", "thisisa", "thisisasentence"]
当我将 splitParameter 更改为 "" 我得到:
["this is a sentence"]
当我传入“t”时,我得到:
[1: "his a sen", 2: "his is a senence"]
有人可以帮助我走上正轨吗?我正在尝试学习如何在功能上思考事物并使用算法推理,但我无法对原始拆分方法的分隔符位做什么做出正面或反面。
谢谢。
【问题讨论】:
-
如果目标是学习,你最好继续使用它。使用浏览器内置的调试器提供帮助;这样,您可以一次执行每一行代码,查看变量的值等。
-
@phizzy 检查这个小提琴jsfiddle.net/ec56xw8L
-
您永远不会将
stringElement重置为循环中的空字符串。这样做,它会起作用的。 -
请注意,真正的
.split()方法也可以拆分字符串(不是单个字符)和正则表达式。但我想这超出了你的锻炼范围。 -
如果你想复制真正拆分的功能,你可能想看看real specification algorithm
标签: javascript function methods split refactoring