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

Posted

技术标签:

【中文标题】如何使用javascript减去数组中的值【英文标题】:how to subtract values in arrays using 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>

【问题讨论】:

是的,有可能。你试过什么? 我已经更新了问题,以显示我到目前为止所做的事情.. 【参考方案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]); ); 

【讨论】:

以上是关于如何使用javascript减去数组中的值的主要内容,如果未能解决你的问题,请参考以下文章

如何检查数组是不是包含 JavaScript 中的值?

如何检查数组是不是包含 JavaScript 中的值?

如何根据 JavaScript 中的值检查对象是不是在数组中?

如何在javascript中将一个数组中的值添加到另一个数组

如何从 Javascript 中的对象列表中获取键的值?

如何通过Excel中的VB减去从另一个单元格中键入的值?