Daf*_*aft -1 javascript lodash
我有一个对象数组,每个对象都有 2 个值,优先级和名称。
var people = [
{
"name" : "Jim",
"priority" : "Low"
},
{
"name" : "Gary",
"priority" : "Medium"
},
{
"name" : "Andrew",
"priority" : "Medium"
},
{
"name" : "Bill",
"priority" : "High"
},
{
"name" : "Edward",
"priority" : "Medium"
}
]
Run Code Online (Sandbox Code Playgroud)
我想对这个数组进行排序,按优先级从高到低排序,然后在每个优先级中按名称字母顺序排序。
按字母顺序排序非常简单:
people = _.orderBy(people, 'name');
Run Code Online (Sandbox Code Playgroud)
但是我该如何按照我想要的方式按优先级排序呢?
您需要创建一个映射来指定优先级顺序,然后可以使用Array.sort如下所示
let priorityMap = {"High" : 3,"Medium" : 2,"Low" : 1};
let people = [{"name":"Jim","priority":"Low"},{"name":"Gary","priority":"Medium"},{"name":"Andrew","priority":"Medium"},{"name":"Bill","priority":"High"},{"name":"Edward","priority":"Medium"}];
people.sort((a,b) => priorityMap[b.priority] - priorityMap[a.priority] || a.name.localeCompare(b.name));
console.log(people);Run Code Online (Sandbox Code Playgroud)