JavaScriptのsplit()を使って数値の全桁を2乗し連結する方法
本記事では、数値を引数として受け取り、その各桁を2乗して連結した新しい数値を返すJavaScript関数の作成方法を解説します。
問題の概要
作成する関数は、数値を最初かつ唯一の引数として受け取ります。そして、その数値のすべての桁をそれぞれ2乗し、結果を順番に連結して新しい数値として返す必要があります。
例を見てみましょう。入力される数値が以下の場合:
const num = 12349;
期待される出力は次のとおりです:
const output = 1491681;
これは各桁の2乗である「1」「4」「9」「16」「81」を順に連結した結果です。
'1' + '4' + '9' + '16' + '81' = 1491681
実装コード
この問題を解くためのコードは以下のようになります:
const num = 12349;
const squareEvery = (num = 1) => {
let res = '';
const numStr = String(num);
const numArr = numStr.split('');
numArr.forEach(digit => {
const square = (+digit) * (+digit);
res += square;
});
return +res;
};
console.log(squareEvery(num));コードの解説
このコードの処理の流れを順番に見ていきましょう。
- String(num): 数値を文字列に変換します。これにより各桁を個別に扱えるようになります。
- split(''): 空文字列を区切り文字として指定することで、文字列を1文字ずつ分割した配列を作成します(例: ['1', '2', '3', '4', '9'])。
- forEach(): 配列内の各桁に対して繰り返し処理を実行します。
- (+digit) * (+digit): 単項プラス(+)を使って文字列を数値に変換し、その2乗を計算します。
- return +res: 連結された文字列を単項プラスで数値に変換して返します。
出力結果
コンソールには次のように出力されます:
1491681
-
JavaScriptで数値の各桁を切り取って配列を作成する方法
問題今回は、数値を受け取り、その数値を先頭から各桁の位置で切り取った文字列を要素として持つ配列を返すJavaScript関数を作成します。例えば、入力が 246 の場合、出力は [2, 24, 246] のようになります。つまり、最初の1桁目だけ、次に2桁目まで、最後に数値全体というように、桁を増やしながら文字列を配列に格納していくイメージです。実装コード例以下は実際のコードです。const num = 246; const cutOffEach = (num = 1) => { const str = String(num); &nbs
-
JavaScriptで配列内の特定の数値に最も近い2つの要素を検索する方法
問題の概要JavaScriptで、ソート済みの整数配列 arr を第一引数に、目標となる数値 target を第二引数に受け取る関数を作成します。この関数は、配列内に存在する要素の中から target に最も近い2つの数値を選び、それらを昇順に並べた配列として返す必要があります。例えば、以下のような入力が与えられた場合を考えてみましょう。入力:const arr = [1, 2, 3, 4, 5];const target = 3;出力:const output = [2, 3];この場合、target の値が 3 であるため、最も近い2つの要素は 2 と 3 となり、昇順に並べて [2, 3