B-Teck!

お仕事からゲームまで幅広く

【JavaScript】配列の要素の入れ替え

配列の要素の順番を入れ替えるとき、

let temp = ary[x];
ary[x] = ary[y];
ary[y] = temp;

みたいにやってたけど、
なんか1行でできるらしい。

function swap(a,x,y){
  a[x]=[a[y],a[y]=a[x]][0];
  return a;
}

最初見たとき意味わかんなかったんだけど、コメント追加して書き下すとこう。

function swap(array,index1,index2){
  // array[y]の値を添え字0に、
  // array[y]=array[index1]の「代入の実行結果」を添字1に持った配列を作成
  let array2 = [array[index2],array[index2]=array[index1]];
  
  // 上記の配列の添字0をarray[index1]に代入することで、
  // 引数の配列の入れ替えが完了する
  array[x] = array2[0];
  
  return array;
}

let ary = [9,8,7,6,5,4,3,2,1];
console.log(swap(ary,8,3));

言われてみりゃなるほどなって感じ。