嵌套if的javascript问题

嵌套if的javascript问题,javascript,string,if-statement,nested,match,Javascript,String,If Statement,Nested,Match,我正在尝试输入字符串查询,并从中使用string.match来选择执行度量转换所需的信息。经过大量实验后,我一直将此作为输出: “零厘米中有0英寸” 我想知道我的if语句中的逻辑是否有问题。以下是一个示例: var metric = string.match(/centimeters|liters|grams/); var english = string.match(/inches|quarts|pounds/); var ind = string.indexOf(me

我正在尝试输入字符串查询,并从中使用string.match来选择执行度量转换所需的信息。经过大量实验后,我一直将此作为输出: “零厘米中有0英寸”

我想知道我的if语句中的逻辑是否有问题。以下是一个示例:

    var metric = string.match(/centimeters|liters|grams/);
    var english = string.match(/inches|quarts|pounds/);
    var ind = string.indexOf(metric);
    var ind2 = string.indexOf(english);

   if (string.match(/centimeters/) && string.match(/inches/)){
        if (ind < ind2) {
            var string = document.getElementById("box1").value;
            var num = string.match(/\d+$/);
            parseInt(num);
            var conNum = num * 2.54;
            document.getElementById("unit").innerHTML = "There are " + conNum +  " centimeters in " + num + " inches.";
        }
        if (ind2 < ind) {
            var string = document.getElementById("box1").value;
            var num = string.match(/\d+$/);
            parseInt(num);
            var conNum = num/2.54;
            document.getElementById("unit").innerHTML = "There are " +           conNum +  " inches in " + num + " centimeters.";
            }
var metric=string.match(/cm |升|克/);
var english=字符串匹配(/英寸|夸脱|磅/);
var ind=字符串。indexOf(公制);
var ind2=string.indexOf(英语);
if(string.match(/cm/)&&string.match(/inches/)){
如果(ind
我实际上不是100%确定您想要什么,您还没有告诉初始的
字符串
来自哪里,所以我假设一些东西:

HTML

<input type="text" id="box1" value="10" />
<div id="unit"></div>

JAVASCRIPT

    var string = 'centimeters to inches'

    var metric = string.match(/centimeters|liters|grams/);
    var english = string.match(/inches|quarts|pounds/);
    var ind = string.indexOf(metric);
    var ind2 = string.indexOf(english);

   if (string.match(/centimeters/) && string.match(/inches/)){
        if (ind < ind2) {
            var string = document.getElementById("box1").value;
            var num = string.match(/\d+$/);
            parseInt(num);
            var conNum = num * 2.54;
            document.getElementById("unit").innerHTML = "There are " + conNum +  " centimeters in " + num + " inches.";
        }
        if (ind2 < ind) {
            var string = document.getElementById("box1").value;
            var num = string.match(/\d+$/);
            parseInt(num);
            var conNum = num/2.54;
            document.getElementById("unit").innerHTML = "There are " + conNum +  " inches in " + num + " centimeters.";
            }
   }
var字符串='厘米到英寸'
var公制=字符串匹配(/厘米|升|克/);
var english=字符串匹配(/英寸|夸脱|磅/);
var ind=字符串。indexOf(公制);
var ind2=string.indexOf(英语);
if(string.match(/cm/)&&string.match(/inches/)){
如果(ind
需要注意的事项:

  • .match()
    方法返回一个数组,而不是一个字符串。您的代码可以工作,因为正则表达式不包含任何组,但我还是会解决这个问题

  • 电话:

    parseInt(num);
    
    对任何事情都没有影响。但是,仅此一点不会有任何影响,因为您将
    num
    *
    /
    运算符一起使用,这将把字符串(同样来自数组)转换为数字。但是,它不会强制值为整数

  • 您的数字匹配器正则表达式坚持输入字符串的数字部分位于字符串的末尾。这就是
    $
    的意思。因此,可以找到数字的唯一表达式将是
    英寸厘米5
    之类的字符串


您输入到这个代码中的字符串是什么?看起来它需要的字符串形式是
英寸-厘米5
-对吗?我试图以“3厘米中有多少英寸”的形式获取字符串,并且我刚刚尝试将其更改为if(string.match(/cm/){…}然后它正确地执行了计算。您的数字匹配正则表达式显式要求数字位于字符串的最末端-这就是正则表达式中的
$
含义。我刚刚删除了$,现在它可以正常工作了,谢谢!