这个问题在这里已有答案:
大家好,我有排序的任务。这是交易:我有一个数组
arr = [{role:'mom', name:'a'}, {role:'dad', name:'d'}, {role:'bro', name: 'c'}]
并排序序列表sortSequence = ['dad','mom','bro']
所以根据这个列表我需要一个输出数组相等
arr = [{role:'dad', name:'d'}, {role:'mom', name:'a'}, {role:'bro', name: 'c'}]
如何使用sort
方法来做到这一点?
const sortAccordingList = (list, arr) => {
//... ?
}
您可以使用indexOf
获取角色的索引
var sortSequence = ['dad', 'mom', 'bro'];
var arr = [{role:'mom', name:'a'}, {role:'dad', name:'d'}, {role:'bro', name: 'c'}];
arr.sort((a, b) => sortSequence.indexOf(a.role) - sortSequence.indexOf(b.role));
console.log(arr);
您也可以将sortSequence
作为对象。这将使得更容易获得排序顺序。喜欢:
var sortSequence = {dad:1,mom:2,bro:3};
var arr = [{role:'mom', name:'a'}, {role:'dad', name:'d'}, {role:'bro', name: 'c'}];
arr.sort((a, b) => sortSequence[a.role] - sortSequence[b.role]);
console.log(arr);