Javascript 最好使用Lodash按查找表对值进行排序

Javascript 最好使用Lodash按查找表对值进行排序,javascript,arrays,sorting,lodash,Javascript,Arrays,Sorting,Lodash,我的数据如下所示: var list = [ { name:'Charlie', age:3}, { name:'Dog', age:1 }, { name:'Baker', age:7}, { name:'Abel', age:9 }, { name:'Jim', age:5 } ]; 我想添加自定义订单,例如,不按数值或字母顺序。我猜我需要创建一个查找表来完成我的唯一顺序/排名,如下所示 var rank = [ 0: {'Abel'}, 1: {'Baker'}, 2: {'Jim'},

我的数据如下所示:

var list = [
{ name:'Charlie', age:3},
{ name:'Dog', age:1 },
{ name:'Baker', age:7},
{ name:'Abel', age:9 },
{ name:'Jim', age:5 }
];
我想添加自定义订单,例如,不按数值或字母顺序。我猜我需要创建一个查找表来完成我的唯一顺序/排名,如下所示

var rank = [
0: {'Abel'},
1: {'Baker'},
2: {'Jim'},
3: {'Charlie'},
4: {'Dog'}]

const name = _.sortBy(names, list=>{return list.name});
我的
名字
应该
=Abel
,因为我只感兴趣谁是最棒的。如果
Abel
不存在,那么
name
将带回
Baker


我可能需要使用Lodash
sortBy
,但是可以使用其他干净的解决方案来进行排序。

您可以使用具有所需值的哈希表进行排序

对于未知名称,您可以添加一个默认值,然后将这些项移动到顶部(小于一个)或底部(
Infinity

排序值应该不同于零,因为否则默认值将不起作用,因为零是虚假的

var list=[{name:'Charlie',age:3},{name:'Dog',age:1},{name:'Baker',age:7},{name:'Abel',age:9},{name:'Jim',age:5}],
等级={亚伯:1,贝克:2,吉姆:3,查理:4,狗:5},
有序=uu.sortBy(list,({name})=>rank[name]);
控制台日志(已订购)
。作为控制台包装{最大高度:100%!重要;顶部:0;}

一种方法是将列组存储在数组中,然后使用该数组获取列表项的排序位置。这很有效,因为它可以确保您不会使用一些奇怪的位置,但您必须将每个条目从
列表
放入
排名

var列表=[
{姓名:'Charlie',年龄:3},
{姓名:'Dog',年龄:1},
{姓名:'Baker',年龄:7},
{姓名:'Abel',年龄:9},
{姓名:'Jim',年龄:5}
];
变量秩=[
“亚伯”,
“面包师”,
“吉姆”,
“查理”,
“狗”
];
var sorted=u.sortBy(list,item=>rank.indexOf(item.name));
控制台日志(已排序)