やりたいこと
const weekday = [
'日',
'月',
'火',
'水',
'木',
'金',
'土'
];
こういう配列を、月曜始まりとか火曜始まりとかで並び替えたい
例
const start = '土';
const result = [
...[...weekday].splice(weekday.indexOf(start)),
...[...weekday].splice(0, weekday.indexOf(start))
];
console.log(result)
//=> ["土", "日", "月", "火", "水", "木", "金"]
splice
が破壊的なせいで、サクッと書けないが、spread and rest syntaxがあるので、少しは楽
識者乞 or ぼちぼち調べる
- 曜日とか、時(1〜24)、秒・分(1〜60)とかのような末尾までいったら先頭に戻るようなデータの構造を表現した名前
- こういうデータの順番を変える操作を表現した名前
(追記)circular shift
ここでやりたかった操作はcircular shiftと呼ぶことがわかった
- Circular shift - Wikipedia
- 言語やライブラリによっては、
rotate
関数として実装されてる、らしい
(追記) rotate-array
テストのあるnpm pkgあったので、いまはオレオレコード捨ててこれを使ってる