2017-01-22 59 views
0

ajaxポストを介して送信するために、いくつかの子配列を持つ親配列にする必要があります。jQueryで多次元配列を作成する方法

私のhtml:

<tr class="row"> 
    <td><input type="text" /></td> 
    <td><input type="date" /></td> 
    <td><input type="number /></td> 
    <td><input type="number /></td> 
</tr> 
<tr class="row"> 
    <td><input type="text" /></td> 
    <td><input type="date" /></td> 
    <td><input type="number /></td> 
    <td><input type="number /></td> 
</tr> 

私のjavascript:

var detail = new Array() 
$("tr.line").each(function(){ 
    var row = new Array(); 
    $("tr.line input").each(function(){ 
     row.push(this.value); 
    }); 
    detail.push(row); 
}); 

しかし、これは私はそれがより良いがkey: valueに合う

detail = array(
    row = array(
     text: ..., 
     date: ..., 
     number: ..., 
     number: ... 
    ) 
    row = array(
     text: ..., 
     date: ..., 
     number: ..., 
     number: ... 
    ) 
) 
+0

はあなたが見えるように、それを希望するもののサンプル入力を提供することはできますか? 'detail'の中にある重複するキー以外に、私自身はこれだけで何か間違ったことはしません。 – Ohgodwhy

+0

Ohgodwhy、サンプルはまさに上です。それは私の質問の最後のコードブロックです。 –

+0

jsonオブジェクトはどのように見えますか? –

答えて

1

あなたの結果row = Array(text: ...)を行うために必要なものをやっていませんオブジェクトのペア。
HTML:

<tr class="line"> 
    <td><input name="text1" type="text" /></td> 
    <td><input name="date1" type="date" /></td> 
    <td><input name="number1" type="number /></td> 
    <td><input name="number2" type="number /></td> 
</tr> 

JS:

var detail = []; 
$("tr.line").each(function(){ 
    var row = {}; 
    $(this).find('input').each(function(){ 
     row[this.name] = this.value; 
    }); 
    detail.push(row); 
}); 

結果:

detail = [ 
    { 
     text1: ..., 
     date1: ..., 
     number1: ..., 
     number2: ... 
    } 
] 
+0

これはそれです!ありがとうございました! –

関連する問題