Js根据相同列的id按不同列进行二次排序

js secondary sort by different column depending on id of equal column

本文关键字:排序 二次 Js id      更新时间:2023-09-26

我有一个水果采摘网站。有五名员工,一个上上午班,一个上下午班。

在月底,看看谁是最好的工人,他们想排序谁拥有最多(一天内的物品)。

他们想使用的第二种排序是,如果有平局,那么他们想比较谁在他们一起工作的日子里摘了更多的水果。

在数组中处理这个有一个sd-???每个与他们一起工作的员工的项目,sd-??是通过将两个员工的id加在一起计算出来的,所以当sd-111222 April和Bruno在同一天做的时候。谁在一天中采摘了更多,也会得到一个1,增加到这个字段sd-111222。

这是我目前看到的代码。

<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>
由<<p>哪些strong>最然后 id

我想要的是类似下面二级排序的逻辑,但我不知道如何应用它。

如果most等于

获取两个相等的五线谱的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);

已更新的小提琴