如何使用javascript减去数组中的值

时间:2016-09-30 13:03:22

标签: javascript php jquery html arrays

我有3个相同长度的数组。我想在不点击按钮的情况下减去前两个数组中的值,如果答案是否定的,我得到该数组编号的索引,并显示第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');

以上结果确定要显示哪些输入字段(来自第3个数组)。例如,要显示的输入字段是数组索引为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>

5 个答案:

答案 0 :(得分:2)

 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]); }); 

答案 1 :(得分:0)

您可以使用循环:

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

答案 2 :(得分:0)

您可以使用map

  

创建一个新数组,其结果是在此数组中的每个元素上调用提供的函数。

摘录:

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);

答案 3 :(得分:0)

只要您的数组长度相同,这应该有效..

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 :(得分:0)

这是其中一个似乎Array.prototype.map()最适合的案例,但实际上并非如此。如果你认为整个工作Array.prototype.forEach()似乎更好,因为Array.prototype.map()的返回值对我们来说将毫无用处。最好在一个没有返回任何东西的迭代函数中完成工作。

&#13;
&#13;
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*/,"")));
&#13;
.hidden {display:none}
&#13;
<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>
&#13;
&#13;
&#13;