JavaScriptで配列から最大のn個の値を取得する方法
JavaScriptでは、数値の配列を第一引数として、数値 n を第二引数として受け取る関数を作成する場面があります。
この関数は、配列の中から最大の n 個の数値を選び出し、それらの数値からなる新しい配列を返す必要があります。
実装例
コードは以下の通りです。
const arr = [3, 4, 12, 1, 0, 5, 22, 20, 18, 30, 52];
const pickGreatest = (arr = [], num = 1) => {
if(num > arr.length){
return [];
};
const sorter = (a, b) => b - a;
const descendingCopy = arr.slice().sort(sorter);
return descendingCopy.splice(0, num);
};
console.log(pickGreatest(arr, 3));
console.log(pickGreatest(arr, 4));
console.log(pickGreatest(arr, 5));
出力結果
コンソールには以下のように出力されます。
[ 52, 30, 22 ]
[ 52, 30, 22, 20 ]
[ 52, 30, 22, 20, 18 ]
コードの解説
この関数の処理の流れを順番に見ていきましょう。
- 入力チェック: 指定された個数 num が配列の長さを超えている場合は、空の配列を返して処理を終了します。これにより不正な入力に安全に対応できます。
- 配列のコピー:
arr.slice()を使って元の配列のコピーを作成します。これにより、元の配列が変更されることを防ぎます。 - 降順ソート: 比較関数
(a, b) => b - aをsort()に渡すことで、配列を降順(大きい順)に並べ替えます。 - 先頭からn個を抽出:
splice(0, num)で降順にソートされた配列の先頭から n 個の要素を取り出し、新しい配列として返します。
降順にソートした配列の先頭には必ず最大値が並ぶため、この方法を使えば最大の n 個の値をシンプルかつ効率的に取得できます。
-
JavaScriptのArray.values()メソッドとは?使い方とサンプルコードを徹底解説
JavaScriptのArray.values()メソッドとは? JavaScriptのArray.values()メソッドは、対象の配列に含まれるすべての値を格納したイテレーターオブジェクトを返します。ES2015(ES6)以降で利用可能なこのメソッドは、for...ofループやスプレッド構文([...arr])と組み合わせることで、配列の各要素を効率的に取り出せます。 なお、keys()やentries()がインデックス情報も一緒に返すのに対し、values()は純粋に「値」だけを順番に提供する点が大きな特徴です。 基本構文 arr.values() 引数は不要で、戻り値として新しいArr
-
JavaScript配列から一意の値(重複なし)を取得する方法
JavaScriptの配列に含まれる重複した値を取り除き、一意の値(ユニークな値)だけを取得したい場合は、Setオブジェクトを使うのが最もシンプルで効率的な方法です。 Setは同じ値を1つしか格納できないデータ構造のため、配列をnew Set()に渡すだけで自動的に重複が排除されます。その後、スプレッド構文([...set])を使えば、簡単に元の配列形式へ戻すことができます。 サンプルコード 以下は、JavaScriptの配列からすべての一意の値を取得する実際のコード例です。 <!DOCTYPE html> <html lang=ja> <head> <