Every other interview I’m asked to implement a flatten function that receives an array and returns a flattened version of it. They may request different ways to handle edge cases, but my usual answer is in the lines of…

function flatten (collection = []) {
  let result = []

  collection.forEach(item => {
    if (Array.isArray(item))
      result = result.concat(flatten(item))

  return result

Are there better ways to do it? Definitely, but at an early interview stage this is usually good enough.

I’m still glad this comes up more often than implementing mergeSort.