Javascript 什么';我的JS函数有什么问题?

Javascript 什么';我的JS函数有什么问题?,javascript,function,Javascript,Function,我正在优化JS的Java代码,但运行在Nashorn上,没有自己的调试选项。输入为val=“JPG ou PNG”,输出为“JPG ou PNG”。为什么会发生这种情况?我需要输出为“jpg/png” 作用 function process(val) { var cleaned = val.replaceAll("[•×\\tª°▪º⊗ fi ²●˚~ĩ`ũ]", "").trim().toLowerCase(); var out = []; if (cleaned.con

我正在优化JS的Java代码,但运行在Nashorn上,没有自己的调试选项。输入为
val=“JPG ou PNG”
,输出为
“JPG ou PNG”
。为什么会发生这种情况?我需要输出为
“jpg/png”

作用

function process(val) {
    var cleaned = val.replaceAll("[•×\\tª°▪º⊗ fi ²●˚~ĩ`ũ]", "").trim().toLowerCase();
    var out = [];
    if (cleaned.contains("ou")) {
        out = cleaned.split("ou");
    }
    else if (cleaned.contains("/")) {
        out = cleaned.split("/");
    }
    else {
        return cleaned;
    }
    for (var i = 0; i < out.length; i++) {
        out[i] = out[i].trim();
    }
    return join(out, "/");
}
功能过程(val){
var CLEATED=val.replaceAll(“[•×\\tª°”▪º⊗ fi ²●˚ĩ`ũ]”,”).trim().toLowerCase();
var out=[];
如果(已清理。包含(“ou”)){
out=已清理。拆分(“ou”);
}
else if(已清理。包含(“/”){
out=已清理。拆分(“/”);
}
否则{
返回清洁;
}
对于(变量i=0;i
javascript中没有三个函数:

  • javascript中的
    replaceAll(searchValue,newValue)
    replace(searchValue,newValue)

  • contains(searchValue)
    在javascript中是
    indexOf(searchValue)>-1

  • join(数组,分隔符)
    在javascript中是
    array.join(分隔符)

  • 以下是我的解决方案:

    function process(val) {
        var cleaned = val.replace("[•×\\tª°▪º⊗ fi ²●˚~ĩ`ũ]", "").trim().toLowerCase();
        var out = [];
        if (cleaned.indexOf("ou") >= 0) {
            out = cleaned.split("ou");
        }
        else if (cleaned.indexOf("/") >= 0) {
            out = cleaned.split("/");
        }
        else {
            return cleaned;
        }
        for (var i = 0; i < out.length; i++) {
            out[i] = out[i].trim();
        }
        return join(out, "/");
    }
    
    功能过程(val){
    var清洁=val.replace(“[•×\\tª°”▪º⊗ fi ²●˚ĩ`ũ]”,”).trim().toLowerCase();
    var out=[];
    如果(已清理的索引OF(“ou”)>=0){
    out=已清理。拆分(“ou”);
    }
    else if(cleaned.indexOf(“/”>)=0){
    out=已清理。拆分(“/”);
    }
    否则{
    返回清洁;
    }
    对于(变量i=0;i
    您的逻辑是正确的,但是Javascript中的字符串没有'replaceAll'和'contains',所以我将它们替换为'replace'和'indexOf(x)>=0'

    另外,您提到您没有在您的环境中调试的选项,但是您提供的功能是相当独立的。这意味着您可以轻松地将其复制到另一个环境中,以进行隔离测试

    例如,我能够将此代码包装在HTML文件中,然后在web浏览器中打开它(我必须实现自己的“加入”)

    
    函数联接(val、除法器){
    var out=“”;
    对于(变量i=0;i0)out+=除法器;
    out+=val[i];
    }
    返回;
    }
    功能过程(val){
    var清洁=val.replace(“[•×\\tª°”▪º⊗ fi ²●˚ĩ`ũ]”,”).trim().toLowerCase();
    var out=[];
    如果(已清理的索引OF(“ou”)>=0){
    out=已清理。拆分(“ou”);
    }
    else if(cleaned.indexOf(“/”>)=0){
    out=已清理。拆分(“/”);
    }
    否则{
    返回清洁;
    }
    对于(变量i=0;i”+outval);
    

    我通过打开控制台并看到输出“JPG ou PNG=>JPG/PNG”来验证它的工作原理。

    什么是
    replaceAll
    包含
    ?没有这样的方法这些函数在JS中不存在?当它这样使用时,
    join
    。以下是javascript@pedrostrada
    join
    exist@Daniela是的,他们在JS中失踪了。您必须使用和方法来代替
    <html>
    <body>
    <script>
    function join(val, divider) {
        var out = "";
        for(var i = 0; i < val.length; i++) {
            if(out.length > 0) out += divider;
            out += val[i];
        }
        return out;
    }
    
    function process(val) {
        var cleaned = val.replace("[•×\\tª°▪º⊗ fi ²●˚~ĩ`ũ]", "").trim().toLowerCase();
        var out = [];
        if (cleaned.indexOf("ou") >= 0) {
            out = cleaned.split("ou");
        }
        else if (cleaned.indexOf("/") >= 0) {
            out = cleaned.split("/");
        }
        else {
            return cleaned;
        }
        for (var i = 0; i < out.length; i++) {
            out[i] = out[i].trim();
        }
        return join(out, "/");
    }
    
    var inval = "JPG ou PNG";
    var outval = process(inval);
    console.log(inval + " => " + outval);
    </script>
    </body>
    </html>