如何在js中求和数组元素?

时间:2015-08-28 06:38:54

标签: javascript jquery arrays

我的元素有问题。我怎么能像这样对数组元素求和?。

<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.

4 个答案:

答案 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)

&#13;
&#13;
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;
&#13;
&#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]);

Sample Code

如果您遇到任何问题,请与我们联系。