Program to find friend of friends

We are given a map of friends, where one person can have multiple friends. write a program to find all the friends for a person including mutual friends.

This question was asked in a DocuSign frontend interview at the Seattle location.

Example

Input:
const mapping = {
  a: ['b', 'c'],
  b: ['d', 'g'],
  d: ['p', 'q'],
  l: ['x', 'y']
};

console.log(friends(mapping, 'a'));

Output:
["b","c","d","g","p","q"]

// a -> [b, c]
// b -> [d, g]
// d -> [p, q]

To find mutual friends, we have to get the person’s friends list, if the list exits

  • Add all the friends to the final list.
  • Iterate the friends and recursive call the same function and check if there are friends for each of these friends.
  • If friends are found, add them to the final list.
const friends = (mapping, person) => {
  // get the friends list
  const friendsList = mapping[person];
  
  // if the friend's list exits
  if(friendsList) {
    // then get the list in the final output
    const output = [...friendsList];
    
    // iterate each friend of the list
    for(let entry of friendsList){
      // and if mutual friends for these friends exit
      // add them to the final list
     output.push(...friends(mapping, entry)); 
    }
    
    // return the final list
    return output;
  }
  
  // else return the empty list
  return [];
}
Input:
console.log(friends(mapping, 'a'));

Output:
["b","c","d","g","p","q"]