Sérialiser un formulaire en tableau associatif avec jQuery

Cette extension pour jQuery permet de serialiser un formulaire en produisant pour chacun de ses éléments un objet avec les clés name et value, regroupés dans un tableau.

$.fn.serializeAssoc = function() {
	var data = {};
	$.each( this.serializeArray(), function(key, obj){
		var a = obj.name.match(/(.*?)\[(.*?)\]/);
		if(a !== null){
			var subName = a[1];
			var subKey  = a[2];
			if( !data[subName] ) data[subName] = [];
			if( data[subName][subKey] ){
				if( $.isArray( data[subName][subKey] ) ){
					data[subName][subKey].push(obj.value);
				}else{
					data[subName][subKey] = [];
					data[subName][subKey].push(obj.value);
				}
			}else{
				data[subName][subKey] = obj.value;
			}
		}else{
			if( data[obj.name] ){
				if( $.isArray( data[obj.name] ) ){
					data[obj.name].push( obj.value );
				}else{
					data[obj.name] = [];
					data[obj.name].push( obj.value );
				}
			}else{
				data[obj.name] = obj.value;
			}
		}
	});
	return data;
};
var formData = $('form').serializeAssoc();
console.log(formData);