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

时间:2014-05-29 12:53:52

标签: javascript jquery arrays sorting

我有一个水果采摘网站。有五名员工,一名是AM班,另一名是PM班。

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

他们想要使用的次要排序是,如果存在平局,那么他们想要比较谁在他们一起工作的日子里选择了更多的水果。

要在数组中处理这个,有一个sd - ???与他们合作的每个不同工作人员的项目,sd - ???通过将两名工作人员的ids附加在一起来制定,所以4月份的sd-111222和布鲁诺在同一天做了。谁曾在当天选择更多,也会增加1到该字段sd-111222。

这是我到目前为止的代码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 进行排序。

我想要的是类似于次要排序的以下逻辑,但我无法弄清楚如何应用它。

如果大多数是相等的

获得两名平等员工的身份

然后找sd - ???包含这两个ID

并排序更大。

所以在我的例子中,顺序应该是

222(最等于111但更高的sd-111222)

111

333

444(等于555但更高的sd-444555)

555

如何在js中应用此功能?

1 个答案:

答案 0 :(得分:1)

猜猜这会做点什么

return (a.most == b.most)
    ? (b["sd-" + a.id + b.id] - a["sd-" + a.id + b.id])
    : (b.most - a.most);

UPDATED FIDDLE