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() 对其进行排序?
您可以使用逻辑 OR 链接排序条件,并使用 delta fortotal和String#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)