指定された数だけ配列をずらすロジックを組んでみる

要件

2つの配列を渡される。1つ目の配列はずらす数、2つ目の配列は対象となる配列
1つ目の配列の数だけ配列を右にずらしていくロジックを組む

入力値が以下

[5, 4]
[1, 2, 3, 4, 5]

出力値は以下を期待する

[5, 1, 2, 3, 4]

入力

[20, 10]
[41, 73, 89, 7, 10, 1, 59, 58, 84, 77, 77, 97, 58, 1, 86, 58, 26, 10, 86, 51]

出力

[
  '77', '97', '58', '1',
  '86', '58', '26', '10',
  '86', '51', '41', '73',
  '89', '7',  '10', '1',
  '59', '58', '84', '77'
]

実装

function myFunc(a, d) {
  const key = a;
  const base = d;
  const arrayStagger = (base, key) => {
    let result = [];
    let k = 0;
    for(let i = 0; i < base.length; i++){
      if(base.length > i + key){
        result[i+key] = base[i];
      } else {
        result[k] = base[i];
        k++;
      }
    }
    return result;
  }
  let result;
  for(let i =0; i < key.length; i++){
    result = arrayStagger(base, parseInt(key[i], 10));
  }
  return result;
}

まとめ

ひとまず書いてみた。arrayStagger関数は対象となる配列とどれだけずらすとかという数値を入れることで
ずらした結果の配列を返してくれる
キーとなる数とループ中のインデックスで判定して配列を作る

最後にずらす数は複数入ってくるので、その分だけループして結果を返す

関連記事