如何使用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 中的值检查对象是不是在数组中?