gpt4 book ai didi

javascript - 按 3 列排序功能列表并通过修改启动它

转载 作者:行者123 更新时间:2023-11-30 21:20:29 25 4
gpt4 key购买 nike

我有一个表要排序。它目前有 3 列:

货币Td |帐号编号 |复选框Td

我想首先按货币对它进行排序,然后按复选框(选中的到顶部)最后按帐号排序。但是,还需要进行一项修改 - 初始加载时,具有特定货币(“PLN”)的行应显示在表格顶部。之后,所有剩余的行都应正常排序。

我使用 list.js 对行进行排序。我编写了以下排序函数:

const options = {
valueNames: ['currencyTd', 'accountNoTd', 'checkboxTd']
};

const accountsList = new List('accountsList', options);

accountsList.sort('currencyTd', {
order: 'asc',
sortFunction: function (a, b) {
if ((a.currencyTd === 'PLN') != (b.currencyTd === 'PLN')) {
return a.currencyTd === 'PLN' ? 1 : -1;
}
return a.currencyTd > b.currencyTd ? 1 :
a.currencyTd < b.currencyTd ? -1 : 0;
}

});

但它没有按我预期的方式工作。我可能做错了什么?

编辑:我忘了添加 - 我此时编写的当前函数(如上面的代码)应该仅按货币列对其进行排序。当我实现它时,我想按其他列添加排序。

最佳答案

您可以对所有排序标准使用链式方法。

var array = [
{ currencyTd: 'DEF', accountNoTd: 2, checkboxTd: 0 },
{ currencyTd: 'ABC', accountNoTd: 2, checkboxTd: 1 },
{ currencyTd: 'PLN', accountNoTd: 2, checkboxTd: 1 },
{ currencyTd: 'ABC', accountNoTd: 2, checkboxTd: 0 },
{ currencyTd: 'PLN', accountNoTd: 3, checkboxTd: 0 },
{ currencyTd: 'DEF', accountNoTd: 2, checkboxTd: 1 },
{ currencyTd: 'DEF', accountNoTd: 3, checkboxTd: 0 },
{ currencyTd: 'PLN', accountNoTd: 3, checkboxTd: 1 },
{ currencyTd: 'ABC', accountNoTd: 1, checkboxTd: 0 },
{ currencyTd: 'ABC', accountNoTd: 1, checkboxTd: 1 },
{ currencyTd: 'PLN', accountNoTd: 2, checkboxTd: 0 },
{ currencyTd: 'PLN', accountNoTd: 1, checkboxTd: 0 },
{ currencyTd: 'ABC', accountNoTd: 3, checkboxTd: 1 },
{ currencyTd: 'DEF', accountNoTd: 1, checkboxTd: 0 },
{ currencyTd: 'ABC', accountNoTd: 3, checkboxTd: 0 },
{ currencyTd: 'DEF', accountNoTd: 1, checkboxTd: 1 },
{ currencyTd: 'PLN', accountNoTd: 1, checkboxTd: 1 },
{ currencyTd: 'DEF', accountNoTd: 3, checkboxTd: 1 }
];

array.sort(function (a, b) {
return (
(a.currencyTd !== 'PLN') - (b.currencyTd !== 'PLN') || // sort PLN to top
a.currencyTd.localeCompare(b.currencyTd) || // sort currencyTd ASC
a.accountNoTd - b.accountNoTd || // sort accountNoTd ASC
a.checkboxTd - b.checkboxTd // sort checkboxTd ASC
);
});
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 按 3 列排序功能列表并通过修改启动它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45234468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com