JavaScriptで配列内の各数値の末尾n桁だけを取り出す方法
次のように、数値リテラルからなる配列があるとします。
const arr = [56768, 5465, 5467, 3, 878, 878, 34435, 78799];
ここで必要なのは、この配列と数値 n を受け取るJavaScript関数を作成することです。各要素が n 桁以上の数値である場合は、新しい要素として末尾の n 桁のみを含め、n 桁未満の要素は元の値のまま残します。
たとえば n = 2 の場合、上記の配列に対する出力は次のようになります。
const output = [68, 65, 67, 3, 78, 78, 35, 99];
サンプルコード
以下が実際のコードです。
const arr = [56768, 5465, 5467, 3, 878, 878, 34435, 78799];
const splitLast = (arr, num) => {
return arr.map(el => {
if(String(el).length <= num){
return el;
};
const part = String(el).substr(String(el).length - num, num);
return +part || part;
});
};
console.log(splitLast(arr, 2));
コードの解説
この関数の処理の流れは次のとおりです。
1. mapによる各要素の走査: arr.map() を使うことで、元の配列を壊すことなく各要素を変換した新しい配列を生成できます。
2. 桁数チェック: String(el).length <= num で、要素の桁数が指定した n 以下かどうかを判定します。該当する場合はそのまま要素を返します。
3. 末尾n桁の切り出し: 数値を一度文字列に変換し、substr() を使って末尾の n 文字を取り出します。なお、substr() は現在では非推奨(deprecated)となっているため、モダンなコードでは String(el).slice(-num) を使うのがおすすめです。
4. 数値への再変換: 単項プラス演算子 +part によって文字列を数値に戻しています。+part || part という書き方にすることで、先頭に0が付くなどの理由で数値化できないケースでも文字列のまま返せるようになっています。
出力結果
コンソールには次の出力が表示されます。
[
68, 65, 67, 3,
78, 78, 35, 99
]
このように、わずか数行の関数で「配列内の各数値から末尾 n 桁を取り出す」処理を実現できます。ログやIDの下n桁を比較したい場合など、さまざまな場面で応用できる便利なテクニックです。
-
JavaScriptで配列の各要素に二次関数f(x)を適用してソートする方法
問題次のような二次関数が与えられています。f(x) = ax² + bx + cここで、a、b、c は3つの定数です。この課題では、ソート済みの整数配列 arr を第1引数に、a、b、c をそれぞれ第2、第3、第4引数として受け取るJavaScript関数を作成します。この関数は、配列 arr の各要素に関数 f(x) を適用し、その結果を昇順にソートした配列を返す必要があります。例えば、関数への入力が次のようであった場合を考えます。const arr = [-8, -3, -1, 5, 7, 9]; const a = 1; const b = 4; const c = 7;この場合、期待さ
-
JavaScriptで2次元配列の各行の最小値の合計を求める方法
問題 数値を要素とする2次元配列を受け取るJavaScript関数を作成します。この関数は、配列の各行から最小値を1つずつ取り出し、最終的にそれらの合計を返す必要があります。 アプローチ 実装の手順は非常にシンプルです。 各行(部分配列)ごとに最小値を求める 求めた最小値を順番に加算していく 合計値を返す 行内の最小値の計算には、reduce() メソッドと Math.min() を組み合わせるのが便利です。 コード例 以下は実際のコードです。 const arr = [ [2, 5, 1, 6], [6, 8, 5, 8], [3, 6, 7, 5],