基于每行输入动态推送数组

基于我的代码,我想将每行的输入推送到每个数组。 如果是row1,则应将第1行的所有输入值推送到数组a1 。 第二行的输入应该被推送到数组a2 ,依此类推。

这主要是为了我的代码的性能优化,因为我的真实代码行是20+,我试图像下面这样做,但没有成功。

我希望能够知道每一行的数据(用于validation目的)

 $('#check').click(function(event){ event.preventdefault; var a1=[];var a2=[]; $("[id^=row]").find("td input").each(function(i) { a[i].push(this.value); }); $('#output').html('

Pushed arrays:

a1: ['+a1 +']
a2: ['+a2+']'); });
  
1
1

我想你的意思是这个。

我尽量保持尽可能接近你的代码,以免吓跑你

 $('#check').click(function(event){ event.preventdefault; var a=[]; $("[id^=row]").each(function() { // for each row var idx = a.length; // find how many entries in a a[idx]=[]; // add a new array $(this).find("td input").each(function(i) { a[idx].push(this.value); }); // fill the array }); var output = ""; // initialise a string for (var i=0;iPushed arrays:'+output); }); 
  
1
1

我使用$.map来创建一个嵌套数组。 好像你想拥有很多行。 所以,我建议使用2d数组而不是单个变量来避免重复代码。 使用2d数组,您可以遍历每一行; 对于单个变量,您必须手动为每行重写相同的代码。

 $('#check').click(function(event){ event.preventdefault; var serialize = []; $("#myTable tr").each(function () { serialize.push($.map($(this).find("input"), function (ele) { return ele.value; })); }); console.log(serialize); }); 
  
1
1

我会这样做:

 $("#check").click(function() { // collect data var rows = $("tr").get().map(r => ( $("input", r).get().map(i => i.value) )); // print data $("#output").html("

Pushed arrays:

" + rows.map((r, i) => ( "a" + (i + 1) + ": [" + r.join(", ") + "]" )).join("
")); });
  
1
2