如何按值的频率对javascript中的数组进行排序?

时间:2018-09-03 19:38:16

标签: javascript ecmascript-6 lodash

我正在寻找一个函数(最好使用lodash等),该函数将采用数组并产生预期的输出,如下所示:

const arr = [{name: 'Anna', score:4}, {name: 'Bob', score:5}, {name: 'Chris', score:4}]

// expected output
// [{name: 'Anna', score:4}, {name: 'Chris', score:4}, {name: 'Bob', score:5}]

即该函数应按以下顺序排序:

1)“得分”属性的频率

2)“名称”属性(分数相等)

请注意,由于(1),此问题与标记为重复项的问题不同。

1 个答案:

答案 0 :(得分:0)

您可以使用sort函数对特定键进行排序。

const arr = [{name: 'Anna', score:4}, {name: 'Bob', score:5}, {name: 'Chris', score:4}]

arr.sort((a,b) => {
   return a.score === b.score ? a.name > b.name :  a.score > b.score;
});

console.log(arr);