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

JavaScriptで3桁の数値を配列の先頭に移動する方法

概要

JavaScriptでは、数値の配列を受け取り、その中にあるすべての3桁の整数を配列の先頭に移動させる関数を作成することができます。本記事では、splice()unshift()を組み合わせたシンプルな手法を紹介します。

例えば、次のような数値の配列があるとします。

const numList = [1, 324, 34, 3434, 304, 2929, 23, 444];

この配列に対して処理を行うと、3桁の数値(324、304、444)だけが先頭に集められた状態になります。

アプローチ

この問題は、以下の手順で解決できます。

  • 数値が3桁であるかどうかを判定するヘルパー関数を用意します。具体的には、数値が99より大きく1000未満であれば、それは3桁の数値とみなせます。
  • 配列をループで走査し、3桁の数値を見つけたらsplice()でその位置から取り除き、unshift()で配列の先頭に挿入します。

コード例

const numList = [1, 324, 34, 3434, 304, 2929, 23, 444];

// 数値が3桁かどうかを判定する関数
const isThreeDigit = num => num > 99 && num < 1000;

// 3桁の数値を配列の先頭に移動する関数
const bringToFront = arr => {
    for(let i = 0; i < arr.length; i++){
        if(!isThreeDigit(arr[i])){
            continue;
        };
        arr.unshift(arr.splice(i, 1)[0]);
    };
};

bringToFront(numList);
console.log(numList);

コードの解説

  • isThreeDigit: 引数として受け取った数値が99より大きく1000未満、つまり3桁の範囲内であるかどうかを真偽値で返します。
  • bringToFront: 配列の各要素を先頭から順番にチェックします。3桁以外の数値であればcontinueでスキップし、3桁の数値であればarr.splice(i, 1)[0]によってその位置から要素を取り除き、直ちにunshift()で配列の先頭へ挿入します。

なお、元の配列自体が直接書き換えられる点に注意してください。元の配列を保持したい場合は、あらかじめ[...numList]のようにコピーを作成してから関数に渡すとよいでしょう。

実行結果

上記のコードをコンソールで実行すると、次のような出力が得られます。

[
   444, 304,  324,
     1,  34, 3434,
  2929,  23
]

ご覧のとおり、3桁の数値である444、304、324が配列の先頭に移動しており、それ以外の数値は元の相対的な順序を保ったまま後ろに配置されています。

  1. JavaScriptのshift()メソッドで配列の先頭要素を削除する方法

    JavaScript の shift() メソッドは、配列の先頭(最初)の要素を取り除くために使用されます。取り除かれた要素は戻り値として返されるため、「削除」と「取得」を同時に行える便利なメソッドです。shift() メソッドの構文array.shift()shift() は引数を必要とせず、呼び出すだけで配列の最初の要素が削除されます。なお、元の配列自体が変更される(破壊的メソッド)点には注意が必要です。また、空の配列に対して shift() を呼び出した場合は undefined が返されます。それでは、実際に shift() メソッドを使ったサンプルコードを見ていきましょう。例1:配列

  2. JavaScriptのshift()メソッドとは?配列の先頭要素を削除する方法を解説

    JavaScriptのshift()メソッドとはJavaScriptのshift()メソッドは、配列から先頭(最初)の要素を取り除き、その要素を返すメソッドです。この操作により配列の長さは1つ減少します。なお、末尾の要素を削除したい場合はpop()メソッドを使用し、先頭に要素を追加したい場合はunshift()メソッドを使います。shift()メソッドのコード例以下は、ボタンをクリックすると配列の先頭要素が削除されるサンプルコードです。<!DOCTYPE html> <html lang="ja"> <head> <meta cha