amatiasq
1/21/2015 - 11:01 AM

split-name.js

  // Calculates the space closest to the middle of the name
  function splitName(name) {
    var middle = name.length / 2;
    var spaces = [];
    var last = name.indexOf(' ');

    while(last !== -1) {
      spaces.push(last);
      last = name.indexOf(' ', last + 1)
    }

    if (!spaces.length) {
      return {
        firstName: name,
        lastName: '',
      };
    }

    var splitAt = spaces.reduce(function(current, position) {
      var better = Math.abs(current - middle);
      var distance = Math.abs(position - middle);
      return distance < better ? position : current
    }, name.length);

    return {
      firstName: name.substr(0, splitAt),
      lastName: name.substr(splitAt + 1),
    };
  }