/**
 * Given an array with heights, sort them except if the value is -1.
 *
 * @param {Array} arr
 * @return {Array}
 *
 * @example
 * arr = [-1, 150, 190, 170, -1, -1, 160, 180]
 *
 * The result should be [-1, 150, 160, 170, -1, -1, 180, 190]
 */
function sortByHeight(arr) {
  const sorted = [];
  const minus = [];
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === -1) {
      minus.push(i);
    } else {
      sorted.push(parseInt(arr[i], 10));
    }
  }
  sorted.sort((a, b) => (a - b));
  for (let i = 0; i < minus.length; i++) {
    sorted.splice(minus[i], 0, -1);
  }
  return sorted;
}

module.exports = sortByHeight;
