Localizar permuta i em javascript

Dada uma matrizarr de tamanhon, e índice0<i<n! Eu quero retornar a i-ésima permutação.

Consegui escrever um método que obtém todas as permutações:

function permute (arr) {
  var permutations = [];
  if (arr.length === 1) {
    return [ arr ];
  }

  for (var i = 0; i <  arr.length; i++) { 
    var subPerms = permute(arr.slice(0, i).concat(arr.slice(i + 1)));
    for (var j = 0; j < subPerms.length; j++) {
      subPerms[j].unshift(arr[i]);
      permutations.push(subPerms[j]);
    }
  }
  return permutations;
}

Como faço para apará-lo para obter apenas um ramo da recursão?

questionAnswers(2)

yourAnswerToTheQuestion