Array by copy
Array by copy メソッド(toSorted, toReversed, with, toSpliced)は元の配列を変更せずに新しい配列を返します。イミュータブルなデータ操作が求められる React の状態管理などで特に有用です。
概要
Array by copy メソッド(toSorted, toReversed, with, toSpliced)は元の配列を変更せずに新しい配列を返します。イミュータブルなデータ操作が求められる React の状態管理などで特に有用です。
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 110 | 110 | 115 | 16 | 110 | 16 | |
| ビルトインオブジェクト | ||||||
| toSorted() は Array インスタンスのメソッドで、 Array/sort メソッドに対応するコピーメソッドです。これは、要素を昇順にソートした新しい配列を返します。 | 110 | 110 | 115 | 16 | 110 | 16 |
| toSpliced() は Array インスタンスのメソッドで、 Array/splice メソッドに対応するコピーメソッドです。これは、指定された位置の要素を除去したり置き換えたりした新しい配列を返します。 | 110 | 110 | 115 | 16 | 110 | 16 |
| with() は Array インスタンスのメソッドで、ブラケット記法に対応するコピーメソッドです。これは、指定された位置の要素を指定された値で置き換えた新しい配列を返します。 | 110 | 110 | 115 | 16 | 110 | 16 |
| toReversed() は TypedArray インスタンスのメソッドで、 TypedArray/reverse メソッドに対応するコピーメソッドです。このメソッドは、要素を逆順にした新しい型付き配列を返します。このメソッドは Array.prototype.toReversed() と同じアルゴリズムです。 | 110 | 110 | 115 | 16 | 110 | 16 |
| toSorted() は TypedArray インスタンスのメソッドで、 TypedArray/sort メソッドのコピーメソッド版です。これは、要素を昇順にソートした新しい型付き配列を返します。このメソッドは Array.prototype.toSorted() と同じアルゴリズムですが、既定で文字列としてではなく数値として値をソートする点が異なります。 | 110 | 110 | 115 | 16 | 110 | 16 |
| with() は TypedArray インスタンスのメソッドで、ブラケット記法を使用して指定された位置の値を変更することのコピーメソッド版です。これは指定されたインデックスの要素を指定された値で置き換えた新しい配列の添字を返します。このメソッドのアルゴリズムは Array.prototype.with() と同じです。 | 110 | 110 | 115 | 16 | 110 | 16 |
基本構文
const original = [3, 1, 4, 1, 5];
// Sort without modifying the original array
const sorted = original.toSorted();
console.log(sorted); // [1, 1, 3, 4, 5]
console.log(original); // [3, 1, 4, 1, 5] ← remains unchanged
// Reverse
const reversed = original.toReversed();
// Replace at specific indices
const replaced = original.with(2, 99);
// [3, 1, 99, 1, 5]
// Non-destructive version of splice
const spliced = original.toSpliced(1, 2, 10, 20);
// [3, 10, 20, 1, 5] ライブデモ
実務での使いどころ
-
Array by copy の活用
元の配列を変更せずにソート・反転・挿入を行うメソッド群。toSorted, toReversed, with, toSpliced を提供。
注意点
- 特になし。すべての主要ブラウザで安定して動作する。
アクセシビリティ
- JavaScript による動的更新時は、aria-live リージョンで変更をスクリーンリーダーに通知する。
参考リンク
Powered by web-features