NodeJSこの配列作成機能を高速化する方法

うさぎ

これが何であるかを説明するのに良いタイトルを付けるのは困難でしたが、それは私が思いついた最高のものです。とにかく、これは単にカードのデッキを作成し、次にホールカードを削除します。この新しいデッキの作成、シャッフル、ホールカードの削除を何千回も繰り返す必要があるため、パフォーマンスは非常に重要です。

デッキの作成は非常に高速ですが、JSで要素を削除する簡単な方法が見つからないため、ホールカードの削除機能はパフォーマンスに大きな打撃を与えます。

const suits = ['s', 'h', 'd', 'c'];
const remove = ['10s', '11s', '13h', '9c'];

var deck = mkDeck();
shuffle(deck)
rmvHole();

// Functions

function rmvHole() {
  for (let i = 0; i < remove.length; i++) {
    const key = Object.keys(deck).find(key => deck[key] === remove[i]);
    deck[key] = null;
  }
}

function mkDeck() {
  let arr = [];
  for (let s = 0; s < 4; s++) {
    for (let i = 2; i < 15; i++) {
      arr.push(i + suits[s]);
    }
  }
  return arr;
}

function shuffle(a) {
  for (let i = a.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [a[i], a[j]] = [a[j], a[i]];
  }
  return a;
}

console.log(deck);
.as-console-wrapper { max-height: 100% !important; top: auto; }

特定のパフォーマンス

以来deck配列でなければなりません、あなたは間違いなく、その反復処理はならないObject.keys配列値が全てのプリミティブなので、むしろ、あなたとインデックスを識別することができます-indexOfsplice、またはにその配列インデックスにある項目を設定するnull:それはあなたが欲しいものだ場合

function rmvHole() {
    for (let i = 0, { length } = remove; i < length; i++) {
        const index = deck.indexOf(remove[i]);
        // deck.splice(index, 1);
        // deck[index] = null;
    }
}

(インデックスをに設定しnullても、実際には配列から要素が削除されるわけではありません。そのため、splice代わりに必要なことを意味しているのではないかと思います

const suits = ['s', 'h', 'd', 'c'];
const remove = ['10s', '11s', '13h', '9c'];

var deck = mkDeck();
shuffle(deck)
rmvHole();

// Functions

function rmvHole() {
  for (let i = 0; i < remove.length; i++) {
    const index = deck.indexOf(remove[i]);
    deck[index] = null;
  }
}

function mkDeck() {
  let arr = [];
  for (let s = 0; s < 4; s++) {
    for (let i = 2; i < 15; i++) {
      arr.push(i + suits[s]);
    }
  }
  return arr;
}

function shuffle(a) {
  for (let i = a.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [a[i], a[j]] = [a[j], a[i]];
  }
  return a;
}

console.log(deck);
.as-console-wrapper {
  max-height: 100% !important;
  top: auto;
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

パンダの文字列機能を高速化する方法は?

分類Dev

ffmpeg、gifまたはビデオの作成、「PLAY」を高速化する方法、fps = 1が機能しない

分類Dev

「すべてを検索」の主な機能を高速化する方法

分類Dev

非常に遅いパンダの適用機能を高速化する方法は?

分類Dev

連結機能を高速化する方法

分類Dev

文を比較するための比較機能の高速化

分類Dev

numbaJITで機能を高速化する際の問題

分類Dev

Python-別のnumpy配列計算からnumpy配列を作成するforループを高速化する方法

分類Dev

Pythonでnumpy配列の製品を高速化する方法

分類Dev

numpy配列の関数を高速化する方法

分類Dev

このPythonコードを高速化する方法は?

分類Dev

このPython関数を高速化する方法は?

分類Dev

Pythonでこのタスクを高速化する方法

分類Dev

この計算を高速化する方法は?

分類Dev

このSQLクエリを高速化する方法

分類Dev

このループコードを高速化する方法は?

分類Dev

このRcpp関数を高速化する方法は?

分類Dev

このログパーサーを高速化する方法は?

分類Dev

このmysql結合クエリを高速化する方法

分類Dev

このPyMongoクエリ/ループを高速化する方法

分類Dev

この暗号クエリを高速化する方法は?

分類Dev

この機能を高速化するための可能性は何ですか?

分類Dev

postgis拡張機能を使用するクエリを高速化する方法は?

分類Dev

nodejsでの複数の待機中の呼び出しを高速化する

分類Dev

「エージェントランサック」の主な機能を高速化する方法

分類Dev

Mysqlの最適化:これを高速化する方法はありますか?

分類Dev

このコードを高速化する方法はありますか?

分類Dev

このmysqlクエリを高速化する方法はありますか?

分類Dev

このコードを高速化する方法はありますか?

Related 関連記事

  1. 1

    パンダの文字列機能を高速化する方法は?

  2. 2

    ffmpeg、gifまたはビデオの作成、「PLAY」を高速化する方法、fps = 1が機能しない

  3. 3

    「すべてを検索」の主な機能を高速化する方法

  4. 4

    非常に遅いパンダの適用機能を高速化する方法は?

  5. 5

    連結機能を高速化する方法

  6. 6

    文を比較するための比較機能の高速化

  7. 7

    numbaJITで機能を高速化する際の問題

  8. 8

    Python-別のnumpy配列計算からnumpy配列を作成するforループを高速化する方法

  9. 9

    Pythonでnumpy配列の製品を高速化する方法

  10. 10

    numpy配列の関数を高速化する方法

  11. 11

    このPythonコードを高速化する方法は?

  12. 12

    このPython関数を高速化する方法は?

  13. 13

    Pythonでこのタスクを高速化する方法

  14. 14

    この計算を高速化する方法は?

  15. 15

    このSQLクエリを高速化する方法

  16. 16

    このループコードを高速化する方法は?

  17. 17

    このRcpp関数を高速化する方法は?

  18. 18

    このログパーサーを高速化する方法は?

  19. 19

    このmysql結合クエリを高速化する方法

  20. 20

    このPyMongoクエリ/ループを高速化する方法

  21. 21

    この暗号クエリを高速化する方法は?

  22. 22

    この機能を高速化するための可能性は何ですか?

  23. 23

    postgis拡張機能を使用するクエリを高速化する方法は?

  24. 24

    nodejsでの複数の待機中の呼び出しを高速化する

  25. 25

    「エージェントランサック」の主な機能を高速化する方法

  26. 26

    Mysqlの最適化:これを高速化する方法はありますか?

  27. 27

    このコードを高速化する方法はありますか?

  28. 28

    このmysqlクエリを高速化する方法はありますか?

  29. 29

    このコードを高速化する方法はありますか?

ホットタグ

アーカイブ