⛳
【JavaScript】元の配列を変更せずに並び替えした配列を作る
検証環境
- node v14.17.5
元の配列を変更せずに並び替えした配列を作る
Array.prototype.sort()
は並び替えをした配列を返すが、実行した配列自身も変更する。
const ary = [2, 4, 3, 5, 1];
const sorted = ary.sort((a, b) => a - b);
console.log(sorted); // => [ 1, 2, 3, 4, 5 ]
// 元の配列まで変更される
console.log(ary); // => [ 1, 2, 3, 4, 5 ]
元の配列は変更せずに並び替えした配列を作成したい場合は、以下のようにするといい。
元の配列を複製してから Array.prototype.sort()
を実行するイメージ。
( 配列の複製についてはこちらの記事を参照 )
const ary = [2, 4, 3, 5, 1];
const sorted = ary.concat().sort((a, b) => a - b);
// ↓こっちでもいい
// const sorted = ary.slice(0, ary.length).sort((a, b) => a - b);
// const sorted = [...ary].sort((a, b) => a - b);
console.log(sorted); // => [ 1, 2, 3, 4, 5 ]
// 元の配列は変更されない
console.log(ary); // => [ 2, 4, 3, 5, 1 ]
参考
Discussion