在if语句中访问数组

时间:2016-01-30 01:35:49

标签: javascript jquery arrays if-statement

我有JavaScript计算器,其中我定义了两个数组如下:

var degInc, degArr = []; 
var radInc, radArr = [];
var PI = Math.PI;
var radStart = (-91*PI/2), radEnd = (91*PI/2);

 for (degInc = -8190; degInc <= 8190; degInc+=180) {
       degArr.push(degInc);
    }
 for (radInc = radStart; radInc <= radEnd; radInc+=PI) {
        var radIncFixed = radInc.toFixed(8);
       radArr.push(radIncFixed);
    }

与切线函数(下图)一起使用,以便在用户尝试获取这些值的正切值时(如下所示)显示Undefined的值(我已包含其他值)相关功能):

输入 -

<INPUT NAME="display" ID="disp" VALUE="0" SIZE="28" MAXLENGTH="25"/>

功能 -

function tan(form) {
  form.display.value = trigPrecision(Math.tan(form.display.value));
}

function tanDeg(form) {
  form.display.value = trigPrecision(Math.tan(radians(form)));
}

function radians(form) {
  return form.display.value * Math.PI / 180;
}

使用jQuery -

$("#button-tan").click(function(){
        if (checkNum(this.form.display.value)) {
            if($("#button-mode").val() === 'DEG'){
                tan(this.form); // INSERT OTHER 'if' STATEMENT HERE FOR RAD ARRAY
            } 
            else{
                tanDeg(this.form); // INSERT OTHER 'if' STATEMENT HERE FOR DEG ARRAY
            }

        }
});

我想在.click函数中加入一个数组检查,这样如果用户输入包含在数组中(degArrradArr,具体取决于模式),计算器返回Undefined。现在,我知道如何在输入显示(Undefined)中显示$('#disp').val('Undefined'),但我无法弄清楚如何配置检查相关数组的if语句。有没有办法在我评论过的#button-tan函数中这样做?

3 个答案:

答案 0 :(得分:1)

点击时循环遍历数组,如果找到匹配的值,则设置变量。

您可以这样做:

$("#button-tan").click(function(e) {
e.preventDefault();
var userInput = $('#disp').val();
var buttonMode = $('#button-mode').val();
var displayVal = '';
if (buttonMode === 'DEG') {
    var radFound = false;
    radArr.forEach(function(item) { // changed from degArr
        if (item === userInput) {
            radFound = true;
        }

        if (radFound) {
            displayVal = 'undefined';
        } else {
            tan(this.form);
        }
    });
} else {
    var degFound = false;
    degArr.forEach(function(item) {
        if (item === userInput) {
            degFound = true;
        }

        if (degFound) {
            displayVal = 'undefined';
        } else {
            tanDeg(this.form);
        }
    });
}

});

答案 1 :(得分:0)

team_home == team_visitor应该有用......

bin

答案 2 :(得分:0)

你可以创建一个Calculator类的简单对象,它保留对这些数组的引用,并像这样使用。我改变了一些方法来接收输入作为参数而不是形式。

$(function () {
  function Calculator()
  {
    var degInc; 
    this.degArr = []; 
    var radInc; 
    this.radArr = [];
    var PI = Math.PI;
    var radStart = (-91*PI/2);
    var radEnd = (91*PI/2);

     for (degInc = -8190; degInc <= 8190; degInc+=180) {
           this.degArr.push(degInc);
        }
     for (radInc = radStart; radInc <= radEnd; radInc+=PI) {
            var radIncFixed = radInc.toFixed(8);
           this.radArr.push(radIncFixed);
        }
  }

  var calc = new Calculator();

  function tan(input) {
    alert("tan called");
    var value = Math.tan(input.value);
    alert("tan called. value: " + value);
    input.value = value;
  }

  function tanDeg(input) {
    alert("tanDeg called");
    var value = Math.tan(radians(input));
    alert("tanDeg called. value: " + value);
    input.value = value;
  }

  function radians(input) {
    alert("radians called");
    var value = input.value * Math.PI / 180;
    alert("radians called. value: " + value);
    return value;
  }

  $("#button-tan").click(function(){

    alert (calc.degArr);
    alert (calc.radArr);

    var displayInput = $("#disp");

    alert("user input: " + displayInput.val());

    if (!isNaN(displayInput.val()))
    {
        if($("#button-mode").val() === 'DEG')
        {
          if (calc.radArr.indexOf(displayInput.val()) > -1)
          {
            alert("user input is in radArr");
          }
          else
          {
            alert("user input IS NOT in radArr");
            tan(displayInput);
          }
        } 
        else
        {
          if (calc.degArr.indexOf(displayInput.val()) > -1)
          {
            alert("user input is in degArr");
          }
          else {
            alert("user input IS NOT in degArr");
            tan(displayInput);
          }
        }
      }
      else
        alert("Not a number in input");
  });
});

如果你想做一些测试,我在第一个输入中创建了一个JSFiddle demo here. Type -8190,然后点击按钮。它将在阵列中。然后尝试在第二个输入中键入&#34; DEG&#34; 并再次单击,您会注意到代码将检查另一个数组(由于IF)。我无法使用辅助函数来计算值,但我认为这可以帮助您解决初始问题。