Получить все возможные комбинации в массиве

Нужно написать функцию getVarriants, которая принимает массив из чисел и возвращает массив массивов со всеми возможными комбинациями

Пример:

getVarriants([1,2]) // [[1,2], [2,1]]
getVarriants([1,2,3]) // [[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]

Ответы (1 шт):

Автор решения: Павел Ериков

Ну например можно вот так:

var permArr = [],
  usedChars = [];

function getVariants(input) {
  var i, ch;
  for (i = 0; i < input.length; i++) {
    ch = input.splice(i, 1)[0];
    usedChars.push(ch);
    if (input.length == 0) {
      permArr.push(usedChars.slice());
    }
    getVariants(input);
    input.splice(i, 0, ch);
    usedChars.pop();
  }
  return permArr
};

document.write(JSON.stringify(getVariants([1, 2, 3])));

Еще кучу вариантов можете посмотреть тут

→ Ссылка