配列内の N 個のランダムな要素

JavaScriptJavaScriptBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、JavaScriptを使って配列からランダムな要素を選択する方法を探ります。Fisher-Yatesアルゴリズムを使って配列をシャッフルする方法を学び、それを使って配列から1つ以上の要素をランダムに選択します。この実験は、配列操作の理解を深め、JavaScriptにおける問題解決能力を向上させることを目的としています。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/loops("Loops") javascript/BasicConceptsGroup -.-> javascript/array_methods("Array Methods") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") subgraph Lab Skills javascript/variables -.-> lab-28503{{"配列内の N 個のランダムな要素"}} javascript/data_types -.-> lab-28503{{"配列内の N 個のランダムな要素"}} javascript/arith_ops -.-> lab-28503{{"配列内の N 個のランダムな要素"}} javascript/comp_ops -.-> lab-28503{{"配列内の N 個のランダムな要素"}} javascript/loops -.-> lab-28503{{"配列内の N 個のランダムな要素"}} javascript/array_methods -.-> lab-28503{{"配列内の N 個のランダムな要素"}} javascript/spread_rest -.-> lab-28503{{"配列内の N 個のランダムな要素"}} end

コード演習:配列からランダムな要素を取得する

コーディングを練習するには、ターミナル/SSHを開いてnodeと入力します。次のコードは、Fisher-Yatesアルゴリズムを利用して配列をシャッフルし、配列のサイズまで、一意のキーでn個のランダムな一意の要素を取得します。

const sampleSize = ([...arr], n = 1) => {
  let m = arr.length;
  while (m) {
    const i = Math.floor(Math.random() * m--);
    [arr[m], arr[i]] = [arr[i], arr[m]];
  }
  return arr.slice(0, n);
};

このコードを使用するには、配列と取得する要素のオプショナルな数nを引数にsampleSize()を呼び出します。nが指定されていない場合、関数は配列からランダムに1つの要素のみを返します。

sampleSize([1, 2, 3], 2); // [3, 1]
sampleSize([1, 2, 3], 4); // [2, 3, 1]

まとめ

おめでとうございます!配列内のN個のランダムな要素の実験を完了しました。スキルを向上させるためにLabExでさらに多くの実験を練習できます。