我的元素有问题。我怎么能像这样对数组元素求和?。
<input type="text" name="noheadRecieved[0][0]">
<input type="text" name="noheadRecieved[0][1]">
<input type="text" name="noheadRecieved[0][2]">
<input type="text" name="noheadRecieved[1][3]">
<input type="text" name="noheadRecieved[1][4]">
<input type="text" name="noheadRecieved[1][5]">
依旧......
我想用第一个键求和所有元素为0,第一个键的单独元素总和为1.
答案 0 :(得分:0)
试试这个:您可以使用map来存储0,1等密钥的总和,并根据您的使用情况再次检索它。
$(function(){
var sumMap = {};
$('input[name^="noheadRecieved"]').each(function(){
var name = $(this).attr('name');
var values = name.match(/\d/g);
var existingVal = parseInt(sumMap[values[0]]) | 0;
var newVal = existingVal + parseInt($(this).val());
sumMap[values[0]] = newVal;
});
alert(sumMap[0]);
alert(sumMap[1]);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<input type="text" name="noheadRecieved[0][0]" value="1">
<input type="text" name="noheadRecieved[0][1]" value="2">
<input type="text" name="noheadRecieved[0][2]" value="3">
<input type="text" name="noheadRecieved[1][3]" value="3">
<input type="text" name="noheadRecieved[1][4]" value="1">
<input type="text" name="noheadRecieved[1][5]" value="3">
答案 1 :(得分:0)
var results = Array.prototype.slice.call(document.querySelectorAll('input[name^=noheadRecieved]')).reduce(function(p, e) {
var i = parseInt(e.name.split(/\D+/)[1]);
return p[i] = (p[i] || 0) + parseFloat(e.value), p;
}, []);
console.log(results);
&#13;
答案 2 :(得分:0)
var sums = [];
for(var i = 0; i < noheadRecieved.length; i++)
{
sum[i] = 0;
for(var j = 0; j < noheadRecieved[i].length; j++)
sums[i] += noheadRecieved[i][j];
}
然后,您可以使用sum [0]访问第一个键为0的所有元素的总和。
答案 3 :(得分:0)
我认为以下示例代码可能会解决您的问题。
var results = [];
var addValue = function (index, value){
var val = results[index];
if(val && val != ""){
results[index] += value;
}else{
results[index] = value;
}
};
$("input[name^='noheadRecieved']").each(function(index, object){
var index = parseInt($(object).attr("name").split(/\D+/)[1]);
addValue(index, parseInt($(object).val()));
});
alert(" Key 0's sum = "+results[0]+" Key 1's sum = "+results[1]);
如果您遇到任何问题,请与我们联系。