繁体   English   中英

为什么这个javascript从“他”中取出“h”?

[英]why does this javascript take the “h” out of “he”?

我有这个javascript代码,它应该在用户输入“1他”进入提示后在警告框中显示4.0026,但由于某种原因,它决定只从“他”中取出“h”并使用以为你只输入了“h”。

var first=prompt("Enter first term");
        if(first==""){
            periodictable();
        }else{
            var split=first.split(" ");
            var firsttrans=split[1].replace("h", 1.008).replace("he", 4.0026);
            alert(firsttrans);
        }

顺便说一句,忽略函数调用periodictable()因为它与此问题无关。

更换后, h你有没有更多的h内。 你可以改变替换,首先看he ,然后看h

var firsttrans = split[1].replace("he", 4.0026).replace("h", 1.008);

您必须更改替换逻辑。 首先你要检查他,如果没有找到,那么h。 根据您当前的逻辑,因为您首先替换h,所以不会再找到“他”。

split[1].replace("he", 4.0026).replace("h", 1.008)

这是另一种清洁解决方案。 这样您就可以根据需要添加任意对,而无需触及替换代码。 您需要做的就是更新并完成更新。

 var str = "Mr.h, here is he "; var reps = { "h" : 1.008, "he" : 4.0026 }; str = str.replace(/he|h/gi, function(found){ return reps[found]; }); console.log(str) 

正如Nina Scholz所说,替补是按顺序发生的。

如果您稍后添加更多元素,您可能希望将数据提取到单独的位置,如下所示:

 var replacements = { "h": 1.008, "he": 4.0026 }; var first=prompt("Enter first term"); if(first==""){ periodictable(); }else{ var split=first.split(" "); var firsttrans=replacements[split[1]]; alert(firsttrans); } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM