Cómo colocar elementos en matrices agrupadas donde se agrupan por una clave en particular

Soy bastante nuevo en Objetos en JS, por lo que necesitaré ayuda. Tengo la siguiente matriz:

var persons = [
    { fname : 'Steven', lname : 'Jameson', age : 20 },
    { fname : 'George', lname : 'Thrump', age : 40 },
    { fname : 'Peter', lname : 'Jacobs', age : 60 },
    { fname : 'Peter', lname : 'Thrump', age : 20 },
    { fname : 'Steven', lname : 'Henderson', age : 40 },
    { fname : 'John', lname : 'Jacobs', age : 30 },
    { fname : 'Steven', lname : 'Thrump', age : 50 },
    { fname : 'George', lname : 'Peterson', age : 40 },
    { fname : 'Peter', lname : 'Jameson', age : 60 }
];

Necesito ordenar la información por una propiedad dada. Lo he intentado confunction( array, 'property' ). En mi caso seráfunction(persons, 'fname'). Tengo que conseguir un Objeto con las teclas delnombres diferentes y que las claves para almacenar la información de todas las personas con ese nombre. Por ejemplo:

Object {
    Steven : everyone with first name Steven,
    George : everyone with first name George,
    Peter : everyone with first name Peter,
    John : everyone with first name John
}

Logro esto:

function group( array, property ) {
        var object = {};

        for (var i = 0; i < persons.length; i++) {
            object[persons[i][property]] = [];

            object[persons[i][property]].push(persons[i])
        };
    };

Creando el objeto con los diferentes nombres como claves, y dándoles Array como valor. ¿Y luego estoy atascado y no sé qué hacer a continuación? ¿Alguien puede ayudar y si tiene pocos minutos para explicar un poco?

Gracias por adelantado.

Respuestas a la pregunta(3)

Su respuesta a la pregunta