【发布时间】:2019-11-06 13:46:41
【问题描述】:
我有一个数组,我需要基于自定义排序顺序 CategoryId:(5,9,14,1,9,3) 基于 TypeID 的最终输出
console.log(_.sortBy(arr, 'CategoryID'));
我可以对 CategoryId 进行排序,但我想按照 CategoryID 的特定顺序进行排序。
<html>
<head>
<script type="text/javascript" src=
"https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore.js">
</script>
</head>
<body>
<script type="text/javascript">
var arr = [
{name: 'kim', salary: 4000,CategoryId:3, TypeId:1},
{name: 'shelly', salary: 5000,CategoryId:14, TypeId:1},
{name: 'don', salary: 100,CategoryId:9, TypeId:1},
{name: 'mark', salary: 4500,CategoryId:5, TypeId:2},
{name: 'mark', salary: 4500,CategoryId:5, TypeId:1},
{name: 'joh', salary: 3450,CategoryId:9, TypeId:1},
{name: 'joe', salary: 5100,CategoryId:1, TypeId:1},
{name: 'moore', salary: 5100,CategoryId:14, TypeId:2},
{name: 'wane', salary: 1500,CategoryId:14, TypeId:2},
{name: 'dick', salary: 400,CategoryId:3, TypeId:1}
];
console.log(_.sortBy(arr, 'CategoryId'));
</script>
</body>
我希望结果集的特定顺序为
CategoryId:(5,9,14,1,3)
最终输出:
const output = [{
name: 'mark',
salary: 4500,
CategoryId: 5,
TypeId: 1,
}, {
name: 'joh',
salary: 3450,
CategoryId: 9,
TypeId: 1,
}, {
name: 'don',
salary: 100,
CategoryId: 9,
TypeId: 1,
}, {
name: 'joh',
salary: 3450,
CategoryId: 9,
TypeId: 1,
}, {
name: 'shelly',
salary: 5000,
CategoryId: 14,
TypeId: 1,
}, {
name: 'joe',
salary: 5100,
CategoryId: 1,
TypeId: 1,
}, {
name: 'kim',
salary: 4000,
CategoryId: 3,
TypeId: 1,
}, {
name: 'mark',
salary: 4500,
CategoryId: 5,
TypeId: 2,
}, {
name: 'moore',
salary: 5100,
CategoryId: 14,
TypeId: 2,
}, {
name: 'wane',
salary: 1500,
CategoryId: 14,
TypeId: 2,
}];
【问题讨论】:
-
按照哪个规则排序:(5,9,14,1,9,3) ?
-
我需要输出格式
-
5、9、14、1、9、3的逻辑是什么?只是一个硬编码的目标?什么标准决定哪一个 9 应该放在这两个 9 位置中的哪一个?
-
我已经更新了代码。我需要根据 TypeID 进行分组,我需要按特定 categoryId (5,9,14,1,9,3) 排序
-
输出应该是什么样子?分组应该是什么样的?
标签: javascript arrays sorting underscore.js