[英]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.