コフス技術ブログ

配列の順番入れ替え

たとえば配列arrayがあった時を考えます。

const array = ['A', 'B', 'C', 'D', 'E', 'F', 'G']

CFを入れ替えたnewArrayは、以下で得ることができます。

utils/swapArray.ts
const SwapArray = (
  array: string[],
  index1: number,
  index2: number
): string[] => {
  const _array = [array[index2], (array[index2] = array[index1])]
  array[index1] = _array[0]

  return array
}

export default SwapArray
index.ts
import SwapArray from './utils/swapArray'

const array = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
const newArray = SwapArray(array, 2, 5)

console.log(newArray) // 'A', 'B', 'F', 'D', 'E', 'C', 'G'

考え方としては単純に値の入れ替えを順番に行っているだけです。
コメントと合わせて見てみると簡素な入れ替え処理であることが分かります。

const SwapArray = (
  array: string[], // ['A', 'B', 'C', 'D', 'E', 'F', 'G']
  index1: number,  // 2
  index2: number   // 5
): string[] => {
  // a = "F"
  const a = array[index2]

  // array[index2]をarray[index1]に置き換え。b = "C"
  const b = (array[index2] = array[index1])

  // この時点でarray = ["A", "B", "C", "D", "E", "C", "G"]
  console.log(array)

  // 変数a,bを配列の形に
  const _array = [a, b]

  // "C"を"F"に置き換え
  array[index1] = _array[0]

  return array // ["A", "B", "F", "D", "E", "C", "G"]
}

export default SwapArray

配列を元に描画している時に、ドラッグ・アンド・ドロップで2点間の要素の順番を入れ替えるという様な処理が必要な時に活用出来そうです。

参考:https://blog.beatdjam.com/entry/2017/09/24/025854