JavaScript 中的多重排序

Man*_*val 2 javascript arrays sorting

我有一个像这样的对象数组:-

var arr = [ {total : 20, name: David},
{total : 10, name: Joe},
{total : 15, name: Tracy},
{total : 20, name: Joel},
{total : 15, name: Michael},
{total : 10, name: Arnold},
{total : 15, name: Paul},
]
Run Code Online (Sandbox Code Playgroud)

我需要先按总数对它们进行排序,然后如果两个总数相同,我需要按名称对它们进行排序

排序后我的预期结果应如下所示:

var arr = [ {total : 20, name: David},
    {total : 20, name: Joel},
    {total : 15, name: Michael},
    {total : 15, name: Paul},
    {total : 15, name: Tracy},
    {total : 10, name: Arnold},
    {total : 10, name: Joe},
    ]
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何使用 Array.sort() 对其进行排序?

Nin*_*olz 6

您可以使用逻辑 OR 链接排序条件,并使用 delta fortotalString#localeComparefor name

var array = [{ total: 20, name: 'David' }, { total: 10, name: 'Joe' }, { total: 15, name: 'Tracy' }, { total: 20, name: 'Joel' }, { total: 15, name: 'Michael' }, { total: 10, name: 'Arnold' }, { total: 15, name: 'Paul' }];

array.sort(function (a, b) {
    return b.total - a.total || a.name.localeCompare(b.name);
});

console.log(array);
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Run Code Online (Sandbox Code Playgroud)