我的JS功能有什么问题?

时间:2015-04-24 14:18:50

标签: javascript function

我正在优化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, "/");
}

2 个答案:

答案 0 :(得分:1)

您的三项功能在javascript中不存在:

    javascript中的
  1. replaceAll(searchValue, newValue)replace(searchValue, newValue)

  2. javascript中的
  3. contains(searchValue)indexOf(searchValue) > -1

  4. javascript中的
  5. join(array, separator)array.join(separator)

  6. <强> JSFIDDLE DEMO

答案 1 :(得分:1)

这是我的解决方案:

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, "/");
}

你的逻辑是正确的,但是Javascript中的字符串没有“替换所有”&#39;并且&#39;包含&#39;,因此我将其替换为&#39;替换&#39;和&#39; indexOf(x)&gt; = 0&#39;。

另外,您提到您没有选择在您的环境中进行调试,但您提供的功能非常独立。这意味着您可以轻松地将其复制到另一个环境中以单独测试它。

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

<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>

我通过打开控制台并看到输出&#34; JPG ou PNG =&gt;验证了它的工作原理。 JPG / PNG&#34;