首页 > 解决方案 > 在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);
    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中,当我将字符串分开时,我应该如何对拆分后的每个字符串运行该方法?图片显示了输入和输出示例以及我当前的输出。在此处输入图像描述

在此处输入图像描述

标签: javascriptcomputer-science

解决方案


这应该适合你

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);
    }

推荐阅读