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

JavaScriptで配列の一部(指定範囲)だけをソートする方法

JavaScriptでは、文字列の配列を第1引数として受け取り、さらに2つの数値をそれぞれ第2引数・第3引数として受け取る関数を作成する必要があります。

この関数の目的は配列をソートすることですが、対象となるのは第2引数と第3引数で指定された開始インデックスから終了インデックスまでの範囲だけです。それ以外の要素はすべて元の順序のまま変更されません。

たとえば、次のように呼び出します。

const arr = ['z', 'b', 'a'];
sortBetween(arr, 0, 1);

この場合、関数はインデックス0と1に位置する要素だけをソートします。その結果、配列は次のようになります。

const output = ['b', 'z', 'a'];

実装例

ポイントとなるのは splice() メソッドです。まず指定範囲の要素を配列から取り除き、その部分だけを sort() で並べ替え、最後に元の位置へ戻すという流れになります。コードは次のように書けます。

const arr = ['z', 'b', 'a'];
const sortBetween = (arr = [], start, end) => {
    const part = arr.splice(start, end - start + 1);
    part.sort();
    arr.splice(start, 0, ...part);
}
sortBetween(arr, 0, 1);
console.log(arr);

処理の流れを整理すると、

1. arr.splice(start, end - start + 1) で、startからendまでの要素を抜き取ります。
2. 抜き出した部分配列に対して part.sort() を実行し、昇順に並べ替えます。
3. arr.splice(start, 0, ...part) で、ソート済みの要素を元の位置に挿入し直します。

出力結果

コンソールには次のように表示されます。

[ 'b', 'z', 'a' ]

このように splice()sort() を組み合わせることで、配列全体ではなく指定した範囲のみを効率的にソートできます。範囲外の要素には一切影響を与えないため、部分的な並べ替えが必要な場面で活用できるテクニックです。

  1. JavaScriptで配列を空にする方法まとめ【3つの手法と使い分けのポイント】

    JavaScriptで配列を空にする(初期化する)方法は複数あります。それぞれの手法には特徴や注意点があり、状況に応じて適切に使い分けることが重要です。この記事では、代表的な3つの方法と、それぞれのメリット・デメリットを詳しく解説します。まず、以下のような配列があると仮定します。let arr = [1, test, {}, 123.43];方法1:新しい空の配列で置き換えるarr = [];変数arrに新しい空の配列を再代入する方法です。最もシンプルかつ高速な手法として知られています。ただし注意点として、元の配列への参照がプログラムの他の場所に存在する場合、それらの参照は自動的に更新されませ

  2. JavaScriptの基本配列メソッド解説!push・pop・shift・unshift・spliceの使い方を実例付きで紹介

    JavaScriptには、配列を操作するための便利な組み込みメソッドが数多く用意されています。その中でも特によく使われるのが、要素の追加や削除を行う以下の5つの基本メソッドです。 JavaScriptの主要な配列メソッド一覧 メソッド説明 Array.push()配列の末尾に要素を追加します。 Array.pop()配列の末尾から要素を取り除きます。 Array.unshift()配列の先頭に要素を追加します。 Array.shift()配列の先頭から要素を取り除きます。 Array.splice()配列内の任意の位置で要素の追加・削除を行います。 これらのメソッドは、配列の