画面上に表示される各値の間に間隔を500ミリ秒との階乗の計算を表示するようにするsetInterval関数を使用する方法?

SeventhWarhawk:

私は、画面に表示される各値の間に500ミリ秒の間隔を作成するために、私のプログラム内のsetInterval機能を実装する必要があります。私は現在使用しているプログラムコードは、計算だけでなく、因数分解の答えを、ユーザからの入力値を取り、書き出します。

function factorizeFunction(number, numberArray = []) { //this is the function that does the factorization calculations
  if (number == 0 || number == 1) numberArray.push(number);
  else {
    numberArray.push(number);
    factorizeFunction(number - 1, numberArray);
  }
  return numberArray.join(' * ') + ' = ' + numberArray.reduce((a, b) => a * b, 1);
}
document.getElementById("factorialTest").innerHTML = factorizeFunction(number);

私としては、例えばのために、答えを持っている必要があります:ディスプレイの間で500ミリ秒の遅延で私のWebページ上の6 * 5 * 4 * 3 * 2 * 1 = 720、ディスプレイ、一度にそれぞれの値、。だから、6 *(500msの遅延)(500msの遅延)5(500msの遅延)...など。私は私がこれをやって行くだろう方法についてはわからないのですか?

PierreDuc:

基本的に、あなたは、画面に印刷したいすべてのもの、事業者や数字、500msの遅延に表示されますする必要があります。どの手段は、まず、これらの要素の配列を取得するのが最善です。

function getFactorElements(factor) {
  // get array like [1, 2, 3, 4]
  const factorArray = Array.from({ length: factor }, (_, i) => i + 1);

  // calculate result
  const result = factorArray.reduce((a, b) => a * b, 1);

  // insert math operators
  const parts = factorArray
    .reverse()
    .map((part) => [ part, part > 1 ? '*' : '=' ])
    .reduce((a, b) => a.concat(b));

  parts.push(result);

  return parts;
}

これはあなたのHTMLされた状態で

<div id="factorialTest"></div>

あなたは、要素と要素を受け入れる別の関数を作成することができます。

async function showFactorCalculation(element, factor) {
  element.innerHTML = '';

  for (const part of getFactorElements(factor)) {
    element.innerHTML += ' ' + part;
    await new Promise((resolve) => setTimeout(resolve, 500));
  }
}

あなたはどちらのように呼び出す必要があります:

showFactorCalculation(document.getElementById('factorialTest'), 9);

そして、私はここにあなたのために働くのスタックを持っています;):

スタック

私が使用しているsetTimeout使用したsetIntervalは主に落胆しているため

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=14605&siteId=1