Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Сократить код. (https://javascript.ru/forum/dom-window/73606-sokratit-kod.html)

MyNameIsCode 28.04.2018 07:08

Сократить код.
 
Привет, гуру js программирования!
Как можно сократить этот код? )
$(document).ready(function() {
    var url_string = window.location.href;
    function get_params_string() {
        var arr = url_string.split('?');
        var get_params = null;
        if (url_string.length > 1 && arr[1] !== '') {
            get_params = arr[1];
        }
        return get_params;
    }

    var url = new URL(url_string);

    var sort_params = [
        url.searchParams.get("start-date-sort"),
        url.searchParams.get("end-date-sort"),
        url.searchParams.get("start-sum-sort"),
        url.searchParams.get("end-sum-sort")
    ];
    console.log(get_params_string());
    if (get_params_string() === undefined || get_params_string() === null) {
        $('#start-date-sort').attr("href","?start-date-sort=DESC");
        $('#end-date-sort').attr("href","?end-date-sort=DESC");
        $('#start-sum-sort').attr("href","?start-sum-sort=DESC");
        $('#end-sum-sort').attr("href","?start-date-sort=DESC");
    } else {
        re = /[a-z-]*-sort=(desc|asc)/gi;
        str = get_params_string().replace(re, '');
        if (sort_params[0] !== null) {
            if (sort_params[0] === 'DESC') {
                $('#start-date-sort').attr("href",'?'+str+'&start-date-sort=ASC');
            } else if (sort_params[0] === 'ASC') {
                $('#start-date-sort').attr("href",'?'+str+'&start-date-sort=DESC');
            }
        } else if (sort_params[0] === null || sort_params[0] === undefined) {
            $('#start-date-sort').attr("href",'?'+str+'&start-date-sort=DESC');
        }

        if (sort_params[1] !== null) {
            if (sort_params[1] === 'DESC') {
                $('#end-date-sort').attr("href",'?'+str+'&end-date-sort=ASC');
            } else if (sort_params[1] === 'ASC') {
                $('#end-date-sort').attr("href",'?'+str+'&end-date-sort=DESC');
            }
        } else if (sort_params[1] === null || sort_params[1] === undefined) {
            $('#end-date-sort').attr("href",'?'+str+'&end-date-sort=DESC');
        }

        if (sort_params[2] !== null) {
            if (sort_params[2] === 'DESC') {
                $('#start-sum-sort').attr("href",'?'+str+'&start-sum-sort=ASC');
            } else if (sort_params[2] === 'ASC') {
                $('#start-sum-sort').attr("href",'?'+str+'&start-sum-sort=DESC');
            }
        } else if (sort_params[2] === null || sort_params[2] === undefined) {
            $('#start-sum-sort').attr("href",'?'+str+'&start-sum-sort=DESC');
        }

        if (sort_params[3] !== null) {
            if (sort_params[3] === 'DESC') {
                $('#end-sum-sort').attr("href",'?'+str+'&end-sum-sort=ASC');
            } else if (sort_params[3] === 'ASC') {
                $('#end-sum-sort').attr("href",'?'+str+'&end-sum-sort=DESC');
            }
        } else if (sort_params[3] === null || sort_params[3] === undefined) {
            $('#end-sum-sort').attr("href",'?'+str+'&end-sum-sort=DESC');
        }
    }
});

Nexus 28.04.2018 09:52

Если не работает, то поправить, думаю, сможете.
$(function() {
    var get_param = location.href.split('#').shift().split('?').pop().trim(),
        $nodes = $("#start-date-sort, #end-date-sort, #start-sum-sort, #end-sum-sort");

    if (!get_param) {
        $nodes.each(function() {
            this.href = this.id + '=DESC';
        });

        return;
    };

    var Url = new URL(location.href),
        str = get_param.replace(/[a-z-]*-sort=(desc|asc)/gi, '');

    $nodes.each(function() {
        this.href = '?' + str + '&' + this.id + '=' + (
            Url.searchParams.get(this.id) == 'DESC' ? 'ASC' : 'DESC'
        );
    });
});

рони 28.04.2018 10:41

Nexus,
:-? строки 3 - 6
$nodes = $("#start-date-sort, #end-date-sort, #start-sum-sort, #end-sum-sort")

Nexus 28.04.2018 10:52

рони, благодарю.
Не удалил сразу вместе с sort_params.

Aetae 28.04.2018 13:24

Ток Url.searchParams ни в каком ослике не заведётся.

MyNameIsCode 02.05.2018 05:02

Цитата:

Сообщение от Nexus (Сообщение 484312)
Если не работает, то поправить, думаю, сможете.
$(function() {
    var get_param = location.href.split('#').shift().split('?').pop().trim(),
        $nodes = $("#start-date-sort, #end-date-sort, #start-sum-sort, #end-sum-sort");

    if (!get_param) {
        $nodes.each(function() {
            this.href = this.id + '=DESC';
        });

        return;
    };

    var Url = new URL(location.href),
        str = get_param.replace(/[a-z-]*-sort=(desc|asc)/gi, '');

    $nodes.each(function() {
        this.href = '?' + str + '&' + this.id + '=' + (
            Url.searchParams.get(this.id) == 'DESC' ? 'ASC' : 'DESC'
        );
    });
});

Спасибо большое! Все работает прекрасно без поправок!

ruslan_mart 02.05.2018 09:08

Цитата:

Сообщение от MyNameIsCode
location.href.split('#').shift().split('?').pop(). trim()

location.search.slice(1)


Часовой пояс GMT +3, время: 05:57.