Как использовать любые функции высшего порядка в JavaScript, чтобы получить желаемый результат для следующего кода? - PullRequest
2 голосов
/ 05 июля 2019

У меня есть вход string = 'ABCDEFGHI' and N = 3. Теперь я хочу получить вывод как 'CFIBGAHEJD', вращая входную строку по кругу и используя значение N.

Пояснение:

string = ABCDEFGHI 
O/P = C

string = ABDEFGHI
O/P = CF

string = ABDEGHI
O/P = CFI

string = ABDEGH
O/P = CFIB

.
.
.
string = D
O/P = CFIBGAHEJ

string = ''
O/P = CFIBGAHEJD

Я пишу код на JavaScript, как показано ниже.

function alphabet(string,N){
  string = string.split('');
  newStr = "";
  var count = 0;
  var  i = 0
  while(string.length > 0){
    count++;
    
    if(count === N ){ 
      newStr += string.splice(i,1)
      count = 0;
      i = i-1; 
    }
    if( i === string.length-1){ 
      i = -1; 
    }
    if(string.length === 1){
      newStr += string.splice(0,1)
    }
    i++
  }

console.log(newStr);

}
alphabet("ABCDEFGHIJ",3)
alphabet("ABCDEFGHIJ",12)
alphabet("ABC",5)

Теперь, как новичок, я хочу сделать это, используя функции высокого порядка в JavaScript. Но я не могу взломать его. Любой может помочь мне получить вывод с помощью этих функций. Если мы не можем использовать эти функции для решения подобных проблем, просто скажите мне причину, по которой мы не можем. Заранее спасибо.

1 Ответ

1 голос
/ 05 июля 2019

Буквально нет причин использовать функции более высокого порядка - они принимают функции в качестве аргументов, и здесь это не то, что вам нужно.Если вы действительно хотите, вы можете сделать что-то вроде этого:

function alphabet(string, numFunc) {
  const N = numFunc();
  string = string.split('');
  newStr = "";
  var count = 0;
  var i = 0
  while (string.length > 0) {
    count++;

    if (count === N) {
      newStr += string.splice(i, 1)
      count = 0;
      i = i - 1;
    }
    if (i === string.length - 1) {
      i = -1;
    }
    if (string.length === 1) {
      newStr += string.splice(0, 1)
    }
    i++
  }

  console.log(newStr);

}
alphabet("ABCDEFGHIJ", () => 3);
alphabet("ABCDEFGHIJ", () => 12);
alphabet("ABC", () => 5);

Но это слишком сложно - ваш оригинальный подход был лучшим.

...