Сокращение числа каждого заявления в jQuery


Так, в соответствии с выбранным идентификатором строки (от 1 до 3), он будет передавать каждое значение в массив. Как я могу уменьшить эти eachзаявления? для row1 это должно подтолкнуть к массиву a для row2 это должно подтолкнуть к массиву B и так далее

    $('#buttonCheck').click(function(event){
         var a1 = []; var a2 = []; var a3 = [];
$("#row1").find("td input").each(function() {a.push(this.value); });
$("#row2").find("td input").each(function() {a.push(this.value); });
$("#row3").find("td input").each(function() {a.push(this.value); });
 });              

HTML-код:

     <table>
     <tr id="row1">
          <td>1</td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
        </tr>
    <tr id="row2">
          <td>1</td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
        </tr>
  <tr id="row3">
          <td>1</td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
         <td><input  type="text"></td>
        </tr>
       </table>


115
-3
задан 9 марта 2018 в 07:03 Источник Поделиться
Комментарии
1 ответ

Один из вариантов заключается в реферат, что общей функцией, дать ему имя (например, checkValues), а затем передать эту функцию .map()тогда присвоить значение из .toArray() для каждого массива.

Думаю map() как создать массив, где функция помещает значения в этот массив, который является тем, что ваш оригинальный код делает.



function mapValues() {
var z = $(this).val();
if (z === "1" || z === "0") {
return this.value;
}
}

function checkValues() {
var a = $("#row1").find("td input").map(mapValues).toArray();
var b = $("#row2").find("td input").map(mapValues).toArray();
var c = $("#row3").find("td input").map(mapValues).toArray();
$('#output').html('<h4>Output:</h4>a: ['+a +'] <br/> b: ['+b+']<br/>c: ['+ c + ']');
}
$(function() { //DOM-ready
$('#check').click(checkValues);
});


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table><tr id="row1">
<td>1</td>
<td><input type="text" value="0" size="4"></td>
<td><input type="text" size="4"></td>
<td><input type="text" size="4"></td>
<td><input type="text" value="0" size="4"></td>
</tr>
<tr id="row2">
<td>1</td>
<td><input type="text" size="4"></td>
<td><input type="text" value="1" size="4"></td>
<td><input type="text" value="0" size="4"></td>
<td><input type="text" size="4"></td>
</tr>
<tr id="row3">
<td>1</td>
<td><input type="text" value="1" size="4"></td>
<td><input type="text" value="1" size="4"></td>
<td><input type="text" size="4"></td>
<td><input type="text" value="0" size="4"></td>
</tr>
</table>
<button id="check">Check Values</button>
<div id="output"></div>



1
ответ дан 9 марта 2018 в 08:03 Источник Поделиться