Filtrar y ordenar una matriz de JavaScript

Tengo una 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
    }
}]

Estoy tratando de crear una nueva matriz con los siguientes criterios:

Obtenga la calificación más alta (array.rating.average) de cada número (array.number)

La salida debe ser:

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

Acabo de ordenar por clasificación más alta:

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

Pero, ahora, solo quiero un objeto por duplicadoarray.number, manteniendo el que tiene el más altoarray.rating.average.

Respuestas a la pregunta(3)

Su respuesta a la pregunta