2015-08-28 4 views
-1

У меня проблемы с моими элементами. как я могу суммировать элементы массива, подобные этому ?.Как суммировать элементы массива в js?

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

+1

Вы пробовали что-нибудь? – Tushar

+0

Не могли бы вы более подробно рассказать, что именно вы хотите? –

+0

Честно говоря, я не понимаю, чего вы на самом деле хотите! –

ответ

0

Попробуйте это: вы можете использовать карту для хранения суммы за 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">

+0

, например, сумму результат равен 6, затем Результат равен 7 Как я могу суммировать эти элементы массива по группе первого ключа динамически? – p3ac3

+0

, пожалуйста, проверьте мой обновленный ответ. выполните фрагмент кода, вы получите сумму в предупреждении. –

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

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

Вы можете получить доступ к сумме всех элементов, где первый ключ является 0, используя сумму [0].

+0

Пожалуйста, подумайте над редактированием сообщения, чтобы добавить больше объяснений о том, что делает ваш код, и почему он решит проблему. Ответ, который в основном содержит только код (даже если он работает), обычно не помогает OP понять их проблему. – SuperBiasedMan

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

Пожалуйста, дайте мне знать, если вы столкнетесь с какой-либо вопрос.

Смежные вопросы