array to object

array to object

by Сергей Тарасевич

HTML

<input type="text" name="ar_name[]" value="11 1" data-ar_search="ar_name">
<input type="text" name="ar_name[]" value="11 2" data-ar_search="ar_name">
<input type="text" name="ar_name2" value="22" data-ar_search="ar_name2">
<input type="text" name="ar_name3" value="33" data-ar_search="ar_name3">
<input type="text" name="ar_name6[]" value="55 1" data-ar_search="ar_name6">
<input type="text" name="ar_name6[]" value="55 2" data-ar_search="ar_name6">
<input type="text" name="ar_name6[]" value="55 3" data-ar_search="ar_name6">
<select class="selectstyle show-tick form-control input-sm" name="fs_nositeli[]" title="---" multiple="" data-actions-box="true" data-size="auto" data-live-search="true" data-selected-text-format="count" data-ar_search="fs_nositeli" tabindex="-98">
    <option value="BD (Blu-ray Disc)">BD (Blu-ray Disc)</option>
    <option value="Blu-Ray 3D" selected>Blu-Ray 3D</option>
    <option value="BD-R">BD-R</option>
    <option value="BD-Re" selected>BD-Re</option>
    <option value="DVD R">DVD R</option>
    <option value="DVD RW">DVD RW</option>
    <option value="CD-RW">CD-RW</option>
</select>
<textarea name="textarea" value="textarea" data-ar_search="textarea">textarea textarea textarea</textarea>

JavaScript

"use strict";
var hash_array = function(a) {
    var b = {};

    $(a).each(function() {
        if (this.value !== '') {
            this.name = this.name.replace(/[\[\]]/g, '');

            if (this.name in b) {
                if ($.isArray(b[this.name])) {
                    b[this.name].push(this.value);

                } else {
                    b[this.name] = [b[this.name], this.value];

                }

            } else {
                b[this.name] = this.value;

            }

        }

    });

    return b;

}

console.log(hash_array($('[data-ar_search]').serializeArray()));