【发布时间】:2021-03-17 08:07:44
【问题描述】:
function processPathLettersIntoArray(source){
source = source.split("M").join(";M");
source = source.split("L").join(";L");
source = source.split("z").join(";z");
source = source.split(";");
source = source.slice(1);
return source.map(mapGroup);
}
这是我的拆分方法。
function gcodeXY(source){
var [xVal, yVal] = source.split(",");
return `X${xVal} Y${yVal}`
}
let start="X0 Y0"; //another side effect :-(
function mapGroup(grp){
let s=grp.split(" ");
if (s[0]=="M"){
start=gcodeXY(s[1]);
last=s[1];
return "G0 F200 "+start;
}
else if (s[0]=="L"){
start=gcodeXY(s[1]);
last=s[1];
return "G1 F100 "+start;
}
else if (s[0]=="z"){
last=s[1];
return "G1 F100 "+start;
}
return grp;
}
这就是我希望每个字符串在拆分后实现的方式。
function path2gcode(source){
source = processPathLettersIntoArray(source);
return source;
}
这是我需要运行的方法。 我想问的是,在Javascript中,当我分割字符串时,分割后的每个字符串应该如何运行该方法?图为输入输出示例和我当前的输出。
【问题讨论】:
-
您可以将测试输入粘贴为文本吗?
-
"M 1,2 L 2,2 L 3,3 z"
-
根据你在做什么,看起来你只是直接打电话给
processPathLettersIntoArray,所以你得到的是正确的。你没有在任何地方使用mapGroup。你有什么问题?如何将mapGroup函数用于数组和返回值? -
一个简单的
for循环应该可以完成这项工作,请在下面查看我的答案 -
其实我被限制使用for、while和goto循环,但是我可以使用递归。
标签: javascript computer-science