めぐの JavaScript 日記

あーもんど

配列のローテーション

配列のローテーション (?) をします。

配列のローテーション

配列の先頭と末尾がつながってるイメージです。
先頭の要素を取り除いたら末尾に追加し,末尾の要素を取り除いたら先頭に追加する……

うまく言葉にできないけどまあそういう感じです。

コード

const rotate = (arr, count = 1) => (
    arr.push(...arr.splice(0, (arr.length + count % arr.length) % arr.length)),
    arr);

引数に与えた配列をかきまぜます。引数 count には移動する要素の数を指定。マイナスの値にすると移動の向きが逆になります。

配列を変更しない (ローテーション後の配列を返す) ようにしたい場合は,配列のコピーを rotate() するだけ。

const rotated = (arr, count = 1) => rotate([...arr], count);

使用例

let arr = [1, 2, 3, 4, 5];
 
console.log(rotated(arr, -1)); // [5, 1, 2, 3, 4]
 
rotate(arr, 2);
console.log(arr); // [3, 4, 5, 1, 2]


日記 (おまけ)

友達がラスクくれた。授業分からんし雨もなかなか止まない