Filtrar e classificar uma matriz JavaScript

Eu tenho uma matriz como esta:

[{
    "number": "4",
    "fileName": "fileXX",
    "rating": {
        "average": 6.4
    }
}, {
    "number": "3",
    "fileName": "fileXX",
    "rating": {
        "average": 5.4
    }
}, {
    "number": "4",
    "fileName": "fileXX",
    "rating": {
        "average": 5.4
    }
}]

Estou tentando criar uma nova matriz com os seguintes critérios:

Obter a classificação mais alta (array.rating.average) de cada número (array.number)

A saída deve ser:

[{
    "number": "4",
    "fileName": "fileXX",
    "rating": {
        "average": 6.4
    }
}, {
    "number": "3",
    "fileName": "fileXX",
    "rating": {
        "average": 5.4
    }
}
}]

Acabei de classificar pela classificação mais alta:

array.sort(function(a , b) {
    return a.rating.average - b.rating.average;
});
array.reverse();

Mas agora eu só quero um objeto por duplicadoarray.number, mantendo o que tiver o maiorarray.rating.average.

questionAnswers(3)

yourAnswerToTheQuestion