JavaScriptで配列のランダムな要素を置き換える方法
JavaScriptの配列内にあるランダムな要素を別の値に置き換えたい場合は、Math.random()とmap()メソッドを組み合わせて使うことで実現できます。
まず、ランダムに選ばれたインデックスをSetオブジェクトに格納し、その後map()を使って該当する位置の値だけを新しい値に差し替えます。重複しない複数のランダム位置を選びたい場合にも、Setを利用することでスマートに処理できます。
サンプルコード
以下が実際のコードです。
function substituteRandomValue(names, size) {
return function () {
const index = new Set();
do {
index.add(Math.floor(Math.random() * names.length));
} while (index.size < size)
return names.map((value, counter) => index.has(counter) ? 'Adam' : value);
};
}
var names = ['John', 'David', 'Bob', 'Mike', 'Carol', 'Sam'],
result = substituteRandomValue(names, 2);
console.log(...result());このプログラムを実行するには、次のコマンドを使用します。
node fileName.js.
ここでは、ファイル名を「demo278.js」としています。
出力結果
上記のコードを実行すると、コンソールには次のような結果が出力されます。
PS C:\Users\Amit\javascript-code> node demo278.js John David Bob Adam Carol Adam
この例では、6つの名前が入った配列からランダムに2つの位置が選ばれ、それらの要素だけが「Adam」に置き換えられていることがわかります。Math.random()によって毎回異なる位置が選ばれるため、実行するたびに出力結果は変化します。この手法は、配列の一部のデータをテスト用の値に差し替えたい場合や、ゲームなどでランダムにアイテムを変更したい場合などに活用できます。
-
JavaScriptのfindIndex()メソッドの使い方を徹底解説
JavaScriptのfindIndex()メソッドは、配列の中から条件に合致する最初の要素を見つけ、そのインデックス(添字)を返すためのメソッドです。条件を満たす要素が存在しない場合は「-1」が返されます。配列の検索処理において、要素そのものではなく「位置」を知りたい場合に非常に便利なメソッドです。findIndex()の基本構文array.findIndex(function(currentValue, index, arr), thisValue)各引数の意味は以下の通りです。currentValue:現在処理中の要素の値index:現在処理中の要素のインデックス(省略可能)arr:対象
-
JavaScriptでランダムな数値を生成する方法|Math.random()の使い方を解説
JavaScriptのMath.random()関数は、0以上1未満の範囲でランダムな浮動小数点数を生成するために使用されます。戻り値は「0以上・1未満」であり、1自体は含まれない点に注意してください。この関数を活用すれば、サイコロのようなランダムな整数の生成や、くじ引き・シャッフル処理など、さまざまな場面で乱数を利用できます。Math.random()で1〜10のランダムな整数を生成する方法1から10までのランダムな整数を取得するには、Math.random()の結果に10を掛け、Math.floor()で小数点以下を切り捨てた後、1を加算します。数式で表すと以下のようになります。Math.