【JavaScript】配列の先頭にある先行ゼロを削除する方法
はじめに
この記事では、JavaScriptで数値の配列から先行ゼロ(先頭に連続する 0)を削除する方法を解説します。
求められている要件はシンプルです。数値の配列を受け取り、もし先頭に 0 が並んでいれば、その先行ゼロを元の配列を直接変更して(in place)削除します。先頭に 0 がない場合は、何も行いません。
処理のイメージ
たとえば、次のような入力配列があったとします。
const arr = [0, 0, 0, 14, 0, 63, 0];
この場合、期待される出力は以下のとおりです。先頭の 3つの 0 だけが取り除かれ、途中や末尾にある 0 はそのまま残ります。
const output = [14, 0, 63, 0];
実装コード
それでは、この関数を実装してみましょう。
const arr = [0, 0, 0, 14, 0, 63, 0];
const removeLeadingZero = arr => {
while (arr.indexOf(0) === 0) {
arr.shift();
};
};
removeLeadingZero(arr);
console.log(arr);このコードをコンソールで実行すると、次の出力が得られます。
[ 14, 0, 63, 0 ]
コードの解説
この実装のポイントは、以下の3点です。
- arr.indexOf(0) === 0:配列の先頭(インデックス 0)に 0 があるかどうかを判定しています。先頭以外にある 0 はこの条件に一致しないため、削除されません。
- arr.shift():配列の先頭要素を取り除くメソッドです。元の配列自体が変更されるため、「in place」での削除という要件を満たします。
- while ループ:先頭に 0 が続いている間は繰り返し shift() を呼び出すことで、連続した先行ゼロをすべて削除できます。
なお、空の配列に対して実行した場合も、indexOf(0) は -1 を返すためループは一度も実行されず、安全に動作します。
-
JavaScriptのArray.prototype.map()メソッドの使い方を徹底解説
Array.prototype.map()とは? JavaScriptのArray.prototype.map()メソッドは、配列の各要素に対してコールバック関数を実行し、その戻り値から新しい配列を作成するためのメソッドです。元の配列は変更されないため、安全にデータ変換を行いたい場合に非常に便利です。 構文 arr.map(function callback(currentValue[, index[, array]]) 各引数の意味は以下のとおりです。 currentValue:現在処理している要素の値 index(省略可能):現在処理している要素のインデックス番号 array(省略可能
-
JavaScriptの基本配列メソッド解説!push・pop・shift・unshift・spliceの使い方を実例付きで紹介
JavaScriptには、配列を操作するための便利な組み込みメソッドが数多く用意されています。その中でも特によく使われるのが、要素の追加や削除を行う以下の5つの基本メソッドです。 JavaScriptの主要な配列メソッド一覧 メソッド説明 Array.push()配列の末尾に要素を追加します。 Array.pop()配列の末尾から要素を取り除きます。 Array.unshift()配列の先頭に要素を追加します。 Array.shift()配列の先頭から要素を取り除きます。 Array.splice()配列内の任意の位置で要素の追加・削除を行います。 これらのメソッドは、配列の