Как я могу показать результат ввода и его перестановки? - PullRequest
1 голос
/ 06 мая 2019

Мне нужно показать все перестановки введенного значения при вводе максимум 5 символов

Я делаю этот пример Codepen, но не работает нормально

https://codepen.io/alonsoct00/pen/WBeXEp

Мой сценарий:

<script>
     function permute(a) {
     if (a.length < 5) return [a];
     var c, d, b = [];
     for (c = 0; c < a.length; c++) {
      var e = a.splice(c, 1),
        f = permute(a);
      for (d = 0; d < f.length; d++) b.push([e].concat(f[d]));
      a.splice(c, 0, e[0])
      }
     return b

    }

   function permuteval() {
   var txtval = document.getElementById('permute_this').value;
   document.getElementById('results').innerHTML = 
   (permute([txtval]).join("\n"));

    }
</script>

Спасибо

Ответы [ 2 ]

1 голос
/ 06 мая 2019

вы заменяете innerHTML новым содержимым.

var txtval = document.getElementById('permute_this').value + '<br>';    
document.getElementById('results').innerHTML += 
   (permute([txtval]));

должно сработать.здесь нет смысла использовать Array.prototype.join (), и \n не будет работать так, как вы хотите в HTML.

также это, вероятно, самый запутанный способ отображения содержимого почему бы и нетпросто взять необработанный ввод и разобрать его?

1 голос
/ 06 мая 2019

Попробуйте использовать оператор спреда:

document.getElementById('results').innerHTML = (permute([...txtval]).join("\n"));

не уверен, что это именно тот результат, который вы ищете

https://codepen.io/jfitzsimmons/pen/RmNZGP

Также мне нравитсяэтот код для перестановок:

const permutations = arr => {
  if (arr.length <= 2) return arr.length === 2 ? [arr, [arr[1], arr[0]]] : arr;
  return arr.reduce(
    (acc, item, i) =>
      acc.concat(
        permutations([...arr.slice(0, i), ...arr.slice(i + 1)]).map(val => [item, ...val])
      ),
    []
  );
};
EXAMPLES
permutations([1, 33, 5]); // [ [ 1, 33, 5 ], [ 1, 5, 33 ], [ 33, 1, 5 ], [ 33, 5, 1 ], [ 5, 1, 33 ], [ 5, 33, 1 ] ]

https://30secondsofcode.org/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...