jsの連想配列にname属性値をkeyとして使用したい
.serializeArray() で取得してそれを連想配列にするものを書いてみました。
HTML
1<form id="form" method="post">
2 <label><input type="checkbox" name="check[]" checked value="1" />check1</label>
3 <label><input type="checkbox" name="check[]" checked value="2" />check2</label>
4 <label><input type="checkbox" name="check[]" value="3" />check3</label>
5
6 <select id="select" name="select">
7 <option value="1">select1</option>
8 <option value="2">select2</option>
9 </select>
10
11 <input type="submit" name="submit" value="send" />
12</form>
13<button>ぼたん</button>
JavaScript
1$( _=> {
2 $( 'button' ).on( 'click', e => {
3 const items = $( 'form' ).serializeArray();
4 console.log( items );
5 const names = items.reduce( ( pre, cur ) => {
6 if ( cur.name in pre ) {
7 if ( !Array.isArray( pre[ cur.name ] ) ) {
8 pre[ cur.name ] = [ pre[ cur.name ] ];
9 }
10 pre[ cur.name ].push( cur.value );
11 } else {
12 pre[ cur.name ] = cur.value;
13 }
14 return pre;
15 }, {} );
16 console.log( names );
17 } );
18} );
19```**動くサンプル:**[https://jsfiddle.net/c4wsjxpw/](https://jsfiddle.net/c4wsjxpw/)
20
21---
22
23【.serializeArray() | jQuery API Documentation】
24[https://api.jquery.com/serializeArray/#serializeArray](https://api.jquery.com/serializeArray/#serializeArray)
25
26【Array.prototype.reduce() - JavaScript | MDN】
27[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce)
28
29【配列、連想配列(ハッシュ)のキーの存在を確認 | JavaScript逆引き | Webサイト制作支援 | ShanaBrian Website】
30[http://shanabrian.com/web/javascript/array-key-exists.php](http://shanabrian.com/web/javascript/array-key-exists.php)
31
32【JavaScript で配列を判定する正しいやり方 - Qiita】
33[http://qiita.com/38kun/items/8b1b91e998ef890e868c](http://qiita.com/38kun/items/8b1b91e998ef890e868c)