引导程序:自定义排序的升序和降序

时间:2019-08-28 15:02:56

标签: javascript html css bootstrap-4

我正在尝试为自举表创建自定义排序器。当我想对值进行排序时,正常的排序功能不起作用: 1.000.000,00; 1.100.000,00; 800.000,00; 900.000,00

它对它们进行如下排序: 900.000,00; 800.000,00; 1.000.000,00; 1.100.000,00

我编写了一个自定义函数,并使用数据分类器对其进行了调用。 该函数被调用,但是我只接收2个参数,a和b,引导程序没有告诉我现在是否应该对asc或desc进行排序。 我尝试编写具有3个参数的函数,并将该行作为附加参数传递给我,我不知道这对我有什么帮助。

HTML:

<table id="milestones" class="table table-bordered w-75 ml-auto mr-auto mt-0 mb-0" data-toggle="table">
    <thead class="thead-light">
        <tr>
            <th data-sortable="true">Year</th>
            <th data-sortable="true">Business</th>
            <th data-sortable="true">Name</th>
            <th data-sortable="true" data-sorter="moneySorter">Money</th>
        </tr>
    </thead>

Javascript:

function moneySorter(a, b) {
    if (a > b) {
        return 1;
    } else {
        return 0;
    }
}

我发现了一个非常丑陋的解决方案,方法是停止两次调用之间的时间,然后如果经过x毫秒又对它进行排序,但是很遗憾,它需要双击才能工作:

    var lastSort = 0;
    var status = 0;

    function moneySorter(a, b) {
        if (new Date().getTime() > lastSort + 20) {
            console.log(status);
            if (status < 3) {
                status = status * 1 + 1;
            } else {
                status = 0;
            }
        }
        lastSort = new Date().getTime();

        if (status < 2) {
            if (a > b) {
                return 1;
            } else {
                return 0;
            }
        } else {
            if (a < b) {
                return 1;
            } else {
                return 0;
            }
        }
    }

我还发现,每次单击排序符号都会调用我的函数,但是第二次才接受结果。这就是为什么我使用4种状态:

状态0:第一次点击,结果被忽略,升序

状态1:第2次点击,结果被接受,升序

状态2:第三次点击,结果被忽略,现在说明

状态3:第4次点击,结果被接受,说明

我当前的代码确实很糟糕,并且只有在用户双击时才起作用。如果有人有一个想法如何传递一个告诉我是否要排序的参数,那就太好了。

谢谢!

0 个答案:

没有答案