我有一个采摘水果的地方。有五名员工,一名执行AM班次,一名进行PM班次。
在月底,查看谁是他们想要按谁最多(一天中的项目)排序的最佳工人。
他们要使用的第二种排序方式是:如果打平,那么他们想比较谁在共同工作的日子里采摘了更多水果。
要在数组中处理此问题,请使用sd-???与他们合作的每个不同工作人员的项目,sd-???通过将两个工作人员的ID附加在一起来算出,因此当sd-111222四月和布鲁诺在同一天进行操作时。当天选择更多内容的人也将在此字段sd-111222中增加1。
这是我到目前为止的代码see fiddle。
<script>
var workers = [
{"id":"111","name":"April", "most":"7","sd-111222":"1","sd-111333":"2","sd-111444":"2","sd-111555":"2"},
{"id":"222","name":"Bruno", "most":"7","sd-111222":"2","sd-222333":"1","sd-222444":"2","sd-222555":"2"},
{"id":"333","name":"Carlos","most":"6","sd-111333":"1","sd-222333":"2","sd-333444":"2","sd-333555":"1"},
{"id":"444","name":"Dwayne","most":"5","sd-111444":"1","sd-222444":"1","sd-333444":"1","sd-444555":"2"},
{"id":"555","name":"Ed", "most":"5","sd-111555":"1","sd-222555":"1","sd-333555":"2","sd-444555":"1"}
];
workers.sort(function(a,b) {
return a.most == b.most ? b.id - a.id : b.most - a.most;
});
console.log(workers);
</script>
哪个按ID排序。
我想要的是类似于以下用于辅助排序的逻辑,但是我无法弄清楚如何应用它。
如果大多数相等
得到两个相等员工的ID
然后寻找SD-???包含这两个ID
并排序哪个更大。
因此,在我的示例中,顺序应为
222(最多等于111,但更高的SD-111222)
111
333
444(最多等于555,但更高的SD-444555)
555
如何在js中应用?
最佳答案
猜猜这会做的
return (a.most == b.most)
? (b["sd-" + a.id + b.id] - a["sd-" + a.id + b.id])
: (b.most - a.most);
UPDATED FIDDLE
关于javascript - js根据相等列的ID按不同的列进行二级排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23933821/