gpt4 book ai didi

javascript - 数组在另一个值中按字母顺序排序在 Javascript 中排序

转载 作者:行者123 更新时间:2023-11-30 09:38:19 26 4
gpt4 key购买 nike

也许我问这个问题的方式不对,但无法从互联网上弄清楚。

我有一个员工数组,可以根据各种值(例如职位、部门)进行排序。

有很多员工具有相同的值(value)观(例如,很多调酒师或很多从事宾客服务的人)。

因此,我需要将这些子组(所有调酒师或所有宾客服务人员或其他任何人)按姓氏字母顺序排序(理想情况下,然后组中具有相同姓氏的那些人,进一步按名字排序).

这是我目前的样子:

  const sorted = state.employees.sort(function(a, b) {
if (a[filterValue] === b[filterValue]) {
let alphaA = a.lastName, alphaB = b.lastName;
return alphaA < alphaB ? -1 : alphaA > alphaB ? 1 : 0;
}
return a[filterValue] > b[filterValue] ? 1 : -1;
});

但是,返回的数组会混淆并在每次点击时返回不同的顺序,如下所示:

enter image description here

并且没有实现 asc/desc 逻辑,因此从理论上讲,多次点击应该返回相同的排序数组,而不是顺序不同的数组。

大概这是因为字母顺序比较不是比较整组匹配值(全部在住宿部门),只是比较即时值,但我不确定这就是问题所在,我完全不确定如何解决。

感谢帮助完成任务,但非常感谢解释,因为我显然不完全理解排序的工作原理。

非常感谢!

最佳答案

var filterValue = 'department' // using a dummy one for now


state.employees.sort(function(a, b){
if (a[filterValue] > b[filterValue]) return 1;
if (a[filterValue] < b[filterValue]) return -1;
//check your filters
if (a.lastname < b.lastname ) return -1;
if (a.lastname > b.lastname ) return 1;
//then check their last names
if (a.firstname < b.firstname ) return -1;
if (a.firstname > b.firstname ) return 1;
//then check their first names
return 0;
});

这是我的演示:https://jsfiddle.net/zjhs20vz/

这是假设我正确回答了您的问题。从排序过滤器中基于这个逻辑漏斗进行排序是有意义的,然后如果它们相等,然后是姓氏,然后是名字

关于javascript - 数组在另一个值中按字母顺序排序在 Javascript 中排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42425829/

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