在Javascript中,当我拆分字符串时,拆分后每个字符串的方法应该如何运行?
In Javascript, when I separate the strings, how should I run the method for each string after the split?
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中,当我拆分字符串时,拆分后每个字符串的方法应该如何运行?图为输入输出示例和我当前的输出。
这应该适合你
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);
output = [];
for(i=0;i<source.length;i++) {
output.push(mapGroup(source[i]));
}
return output;
}
或者,可以使用 .map
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 processPathLettersIntoArray(source) {
const result = source.replace(/M/g, ";M").replace(/L/g, ";L").replace(/z/g, ";z").split(';').slice(1);
return result.map(mapGroup);
}
function gcodeXY(source) {
const [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() {
const source = 'M 1,2 L 2,2 L 3,3 z';
return processPathLettersIntoArray(source);
}
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中,当我拆分字符串时,拆分后每个字符串的方法应该如何运行?图为输入输出示例和我当前的输出。
这应该适合你
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);
output = [];
for(i=0;i<source.length;i++) {
output.push(mapGroup(source[i]));
}
return output;
}
或者,可以使用 .map
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 processPathLettersIntoArray(source) {
const result = source.replace(/M/g, ";M").replace(/L/g, ";L").replace(/z/g, ";z").split(';').slice(1);
return result.map(mapGroup);
}
function gcodeXY(source) {
const [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() {
const source = 'M 1,2 L 2,2 L 3,3 z';
return processPathLettersIntoArray(source);
}