如何根据类别排序数组



我得到了以下对象数组:

var source =  [
{"name": "title_1", "category": "order"},
{"name": "title_2", "category": "purchase"},
{"name": "title_3", "category": "order"},
{"name": "title_4", "category": "detail"},
{"name": "title_5", "category": "order"},
{"name": "title_6", "category": "purchase"},
]

我需要对这个数组进行排序,以获得有序的元素(第一个订单,第二个细节,第三个购买(:

console.log(source.sort(function () {
// todo: ?
}))

预期结果:

[
{"name": "title_1", "category": "order"},
{"name": "title_3", "category": "order"},
{"name": "title_5", "category": "order"},
{"name": "title_4", "category": "detail"},
{"name": "title_2", "category": "purchase"},
{"name": "title_6", "category": "purchase"},
]

如何编写排序函数以获得预期结果?

您可以创建一个拥有每个类别优先级的对象,然后根据该对象对其进行排序。

const source =  [
{"name": "title_1", "category": "order"},
{"name": "title_2", "category": "purchase"},
{"name": "title_3", "category": "order"},
{"name": "title_4", "category": "detail"},
{"name": "title_5", "category": "order"},
{"name": "title_6", "category": "purchase"},
];
const priority = {
order: 3,
detail: 2,
purchase: 1,
};
const r = source.sort((a, b) => priority[b.category] - priority[a.category]);
console.log(r);

最新更新