JavaScriptで配列をn要素分回転させる方法
JavaScriptでは、配列と数値 n を引数に受け取り、その配列を n 要素分回転させる関数を作成することができます。本記事では、その実装方法を具体的なコード例とともに解説します。
処理の概要
例として、次の入力配列を考えてみましょう。
const arr = [12, 6, 43, 5, 7, 2, 5];
この配列を n = 3 だけ回転させると、先頭の3つの要素が末尾へ移動し、出力は以下のようになります。
const output = [5, 7, 2, 5, 12, 6, 43];
コード例
以下は、配列のプロトタイプに rotateBy メソッドを追加して実装した例です。
// 回転処理
const arr = [12, 6, 43, 5, 7, 2, 5];
const rotateByOne = arr => {
for(let i = 0; i < arr.length-1; i++){
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
};
}
Array.prototype.rotateBy = function(n){
const { length: l } = this;
if(n >= l){
return;
};
for(let i = 0; i < n; i++){
rotateByOne(this);
};
};
const a = [1,2,3,4,5,6,7];
a.rotateBy(2);
console.log(a);コードの解説
rotateByOne 関数
rotateByOne は、隣り合う要素同士を順番に入れ替えることで、配列全体を1つ左方向へシフトする補助関数です。ループの中で一時変数 temp を使って要素をスワップしていくため、結果として先頭の要素が末尾へ移動します。
rotateBy メソッド
Array.prototype.rotateBy は、指定された回数 n 分だけ rotateByOne を繰り返し呼び出すことで、配列を n 要素分回転させます。また、n が配列の長さ以上の場合は何もせずに処理を終了するガード節が設けられています。
実行結果
上記のコードを実行すると、コンソールには以下のように出力されます。元の配列 [1, 2, 3, 4, 5, 6, 7] の先頭2要素が末尾へ回転していることが確認できます。
[ 3, 4, 5, 6, 7, 1, 2 ]
-
JavaScriptのconst宣言とは?再代入できない変数の基本と使い方を解説
JavaScriptのconst宣言は、値を再代入することも後から再宣言することもできない変数を作成するための構文です。constはES2015(ES6)で導入されました。 const宣言の主な特徴 一度値を代入すると、別の値に再代入することはできません。 同じ名前の変数を同じスコープ内で再宣言するとエラーになります。 宣言時に必ず初期値を代入する必要があります。 ブロックスコープ({}内でのみ有効)を持ちます。 それでは、JavaScriptにおけるconst宣言の実際のコードを見ていきましょう。 サンプルコード <!DOCTYPE html> <html>
-
ソート済み配列から25%超出現する要素をJavaScriptで効率的に見つける方法
問題概要本記事では、昇順にソートされた整数配列を受け取り、全体の4分の1(25%)を超える回数出現している整数を返すJavaScript関数を実装します。このような特別な出現頻度を持つ要素は、配列内にちょうど1つだけ存在することが保証されているため、工夫された探索戦略によって高速に答えを導き出せます。入力例と出力例たとえば、関数に次の配列を渡した場合を考えてみましょう。const arr = [3, 5, 5, 7, 7, 7, 7, 8, 9];期待される出力は以下の通りです。const output = 7;配列の長さは9なので、その4分の1は2.25です。7は合計4回出現しており、2.2