Print social graph

by odiseo

JavaScript

/* 
 * Question 1
*/

//Creating class (function constructor in js) for Member
//Asumptions: e-mail is a valid unique identifier, as it will be used in the excesice as such
function Member(name, email, friends) {
    this.name = name;
    this.email = email;
    this.friends = friends;
}

//let's create some friends, to later feed out function
var person1 = new Member("Mark", "[email protected]");
var person2 = new Member("Joe", "[email protected]");
var person3 = new Member("Tom", "[email protected]");
var person4 = new Member("Juan", "[email protected]");
var person5 = new Member("Jimmy", "[email protected]");
var person6 = new Member("Jason", "[email protected]");
var person7 = new Member("Heather", "[email protected]");
var person8 = new Member("Ricardo", "[email protected]");
var person9 = new Member("Gustavo", "[email protected]");
var person10 = new Member("Sergio", "[email protected]");


//This is another friend, but it will be me.
var me = new Member("Erick", "[email protected]");

//Creating relationships. I only have two friends
me.friends = [person1, person2];
//my friend person1 has two friends too
person1.friends = [person3, person4];
//my other friend, person2, has 3 friends;
person2.friends = [person5, person6, person7];
//From my friend's friends, only person5 has two friends
person5.friends = [person6, person7, person8, person2, ];
person6.friends = [person9, person10, person3];


printSocialGraph(me);
/*
* Creates an object holding the relationship levels of all member's friend, then print the object starting by level 1
* @param member. An instance of the Member class
*/
function printSocialGraph(member) {
    //We'll keep track of two function scoped variables
    var level = 1;
    var friendGraph = {};
    var friendMailList = {};
    
    if (!member instanceof Member) {
        throw new 'member must be an instance of Member';
    }
    /*
    * Adds a friend to the friendgraph, avoiding inserting any duplicate friend at any...