为什么这个javascript采取" h"出于"他"?

时间:2017-07-21 08:07:07

标签: javascript string split

我有这个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);
        }

btw忽略函数调用periodictable(),因为它与此问题无关。

3 个答案:

答案 0 :(得分:6)

替换h后,您内部不再有h。您可以更改替换内容并首先查看he,然后查看h

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

答案 1 :(得分:1)

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

this.handleSelectChange

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

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

答案 2 :(得分:0)

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