【问题标题】:how to subtract values in arrays using javascript如何使用javascript减去数组中的值
【发布时间】:2017-02-09 01:45:45
【问题描述】:

我有 3 个长度相同的数组。我想减去前两个数组中的值,而不单击按钮,如果答案是否定的,我会得到该数组编号的索引,并从第三个数组中显示一个隐藏的输入字段(在 html 中),其数组索引对应负数的数组索引。

例如:

//assuming this is the first array
array('10','2','3','4','5');
//and assuming this is the second array
array('9','1','4','3','7');

我想从第一个数组中减去第二个的值,这样我就有了结果,例如:

array('1','1','-1','1','-2');

上述结果决定了要显示哪些输入字段(来自第三个数组)。例如要显示的输入字段是数组索引为 2 和 4 的那些

这是我的第三个输入字段数组的代码:

<?php while($roww = mysql_fetch_array($result)) { ?>
     <input type='text' name="reason[]" class="explanation">
<?php } ?>

有什么办法可以让上述事情成为可能吗?

到目前为止,这是我尝试过的,虽然我还没有应用数组..只是对我在互联网上找到的示例进行了轻微更新......

<html>
      <head>
            <script src="jquery.min.js"></script>
            <script>
                    $(document).ready(function(){
                     $(".explanation").hide();
                      var input1_ = document.getElementById('num1');
                      var input_ = document.getElementById('num2');
                      function sub(){
                            var answer = (parseInt(input1_.value) - parseInt(input2_.value));
                            if(answer < 0){
                                  $(".explanation").show();
                            }else $(".explanation").hide();
                       }
                       document.getElementById('num1').onkeyup = function () {
                            sub();
                    };
                      document.getElementById('num2').onkeyup = function () {
                            sub();
                   };
            });
</script>

</head>
<body>
     <input type='number'  id='num1' value="0">
     <input type='number'   id='num2' value="0">
     <input type='text' class='explanation' value="0">
</body>
</html>

【问题讨论】:

  • 是的,有可能。你试过什么?
  • 我已经更新了问题,以显示我到目前为止所做的事情..

标签: javascript php jquery html arrays


【解决方案1】:

您可以决定使用 forEach 方法。 forEach 方法是一种用于定义数组中每个元素的行为的方法。假设从给定数组中的每个元素中减去一个

   let newArr=[ ]
   const  array=  [ '10','2','3','4','5']
  array.forEach(element =>{
   newArr.push(element-1)
   })
  Console.log(newArr)

【讨论】:

    【解决方案2】:

    这是其中一种情况,看起来Array.prototype.map() 是最合适的,但实际上并非如此。如果您从整体上考虑这项工作,Array.prototype.forEach() 似乎更好,因为Array.prototype.map() 的返回值对我们来说毫无用处。最好在不返回任何内容的迭代函数中完成工作。

    var a = ['10','2','3','4','5'],
        b = ['9','1','4','3','7'],
     divs = [div1,div2,div3,div4,div5];
    a.forEach((e,i) => e-b[i] < 0 && (divs[i].className = divs[i].className.replace(/\s*hidden\s*/,"")));
    .hidden {display:none}
    <div id="div1" class="hidden">div1 text</div>
    <div id="div2" class="hidden">div2 text</div>
    <div id="div3" class="hidden">div3 text</div>
    <div id="div4" class="hidden">div4 text</div>
    <div id="div5" class="hidden">div5 text</div>

    【讨论】:

      【解决方案3】:

      只要你的数组长度相同,这应该可以工作..

      function subtrArrays(arr1[], arr2[])
      {
          var final = [];
          for(var i = 0; i < arr1.length(); i++)
          {
              final[i] = arr1[i] - arr2[i];
          }
          return final;
      }
      

      用途:

      var myArray = subtrArrays(array('10','2','3','4','5'),array('9','1','4','3','7'));
      

      【讨论】:

        【解决方案4】:

        您可以使用map:

        使用对该数组中每个元素调用提供的函数的结果创建一个新数组。

        sn-p:

        var firstArr = ['10','2','3','4','5'];
        var secondArr = ['9','1','4','3','7'];
        
        //
        // for each element in the first array
        //
        var result = firstArr.map(function(val, index) {
          
          // convert the current array value to number
          // subtract the value contained in the second array
          // and return the value
          return +val - +secondArr[index];
        });
        
        
        console.log(result);

        【讨论】:

          【解决方案5】:

          你可以使用循环:

          var result = [];
          for (let i=0; i<arr1.length; i++) {
              result[i] = arr1[i]-arr2[i];
          }
          

          【讨论】:

            【解决方案6】:
             var a = Array('10','2','3','4','5'); 
             var b = Array('9','1','4','3','7'); 
             var c = a.map(function(v,i) { return (v - b[i]); }); 
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-02-25
              • 2021-06-27
              • 2011-06-20
              相关资源
              最近更新 更多