JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

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 - asort() に渡すことで、配列を降順(大きい順)に並べ替えます。
  • 先頭からn個を抽出: splice(0, num) で降順にソートされた配列の先頭から n 個の要素を取り出し、新しい配列として返します。

降順にソートした配列の先頭には必ず最大値が並ぶため、この方法を使えば最大の n 個の値をシンプルかつ効率的に取得できます。

  1. JavaScriptのArray.values()メソッドとは?使い方とサンプルコードを徹底解説

    JavaScriptのArray.values()メソッドとは? JavaScriptのArray.values()メソッドは、対象の配列に含まれるすべての値を格納したイテレーターオブジェクトを返します。ES2015(ES6)以降で利用可能なこのメソッドは、for...ofループやスプレッド構文([...arr])と組み合わせることで、配列の各要素を効率的に取り出せます。 なお、keys()やentries()がインデックス情報も一緒に返すのに対し、values()は純粋に「値」だけを順番に提供する点が大きな特徴です。 基本構文 arr.values() 引数は不要で、戻り値として新しいArr

  2. JavaScript配列から一意の値(重複なし)を取得する方法

    JavaScriptの配列に含まれる重複した値を取り除き、一意の値(ユニークな値)だけを取得したい場合は、Setオブジェクトを使うのが最もシンプルで効率的な方法です。 Setは同じ値を1つしか格納できないデータ構造のため、配列をnew Set()に渡すだけで自動的に重複が排除されます。その後、スプレッド構文([...set])を使えば、簡単に元の配列形式へ戻すことができます。 サンプルコード 以下は、JavaScriptの配列からすべての一意の値を取得する実際のコード例です。 <!DOCTYPE html> <html lang=ja> <head> <