簡體   English   中英

在JavaScript或jQuery中獲取多個數組的和

[英]Getting the sum of multiple array in javascript or jquery

如何在JS或jquery中獲得這2 arrays的總和。 我還想檢查b存在或不為空。 這是我的代碼:

 $('select[name=changer]').change(function() { var one = $(this).val(); if (one == 'one') { alert('One'); } else { var all_grade1 = $('select[name=grade\\\\[\\\\]]').val() || []; var all_grade2 = $('select[name=has_grade\\\\[\\\\]]').val() || []; var alls = all_grade1.concat(all_grade2); var yes = alls.reduce(getSum, 0); alert(yes); } }); function getSum(total, value) { return total + parseInt(value, 10); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select name="changer"> <option value="one">One</option> <option value="multiple">Multiple</option> </select> <hr /> <select name="grade[]"> <option value="1">Grade1</option> <option value="2">Grade2</option> <option value="3">Grade3</option> </select> <select name="grade[]"> <option value="2">Grade2</option> <option value="4">Grade4</option> <option value="6">Grade6</option> </select> <select name="has_grade[]"> <option value="1">HasGrade1</option> <option value="2">HasGrade2</option> <option value="3">HasGrade3</option> </select> 

我對此進行了研究,但似乎與我的問題不符。 有任何建議/答案嗎?

在DOM中查詢所有相關的<select>元素

$('select[name=grade\\[\\]], select[name=has_grade\\[\\]]')

遍歷它們並以數字的形式獲得所選選項的值

.get().map(function(select) {
    return parseInt(select.value, 10)
})

總結一下

.reduce(getSum, 0)

所有這些看起來像這樣:

$('select[name=changer]').change(function() {
  var one = $(this).val();

  if (one == 'one') {
    console.log('One');
  } else {
    var selects = $('select[name=grade\\[\\]], select[name=has_grade\\[\\]]');
    var yes = selects.get()                    // get the matched DOM nodes as an array
                      .map(function(select) {  // get the values (as numbers) of the selected options
                        return parseInt(select.value, 10);
                      })
                      .reduce(getSum, 0);      // sum the selected options

    console.log(yes);
  }
});

 $('select[name=changer]').change(function() { var one = $(this).val(); if (one == 'one') { console.log('One'); } else { var selects = $('select[name=grade\\\\[\\\\]], select[name=has_grade\\\\[\\\\]]'); var yes = selects.get() // get the matched DOM nodes as an array .map(function(select) { // get the values (as numbers) of the selected options return parseInt(select.value, 10); }) .reduce(getSum, 0); // sum the selected options console.log(yes); } }); function getSum(total, value) { return total + parseInt(value, 10); // or parseFloat() depending on the value } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select name="changer"> <option value="one">One</option> <option value="multiple">Multiple</option> </select> <hr /> <select name="grade[]"> <option value="1">Grade1</option> <option value="2">Grade2</option> <option value="3">Grade3</option> </select> <select name="grade[]"> <option value="2">Grade2</option> <option value="4">Grade4</option> <option value="6">Grade6</option> </select> <select name="has_grade[]"> <option value="1">HasGrade1</option> <option value="2">HasGrade2</option> <option value="3">HasGrade3</option> </select> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM