.slice().splice()と.with()/.toSpliced()の関係
Array#with()とArray#toSpliced()が追加された。
Array.slice().splice(index, 1, newItem)
= Array.with(index, newItem)
= Array.toSpliced(index, 1, newItem)
という関係だ。
After
const items = [{ name: 'a' }, { name: 'b' }, { name: 'c' }]
// 2つ目の要素のオブジェクトを書き換える
items.splice(1, 1, { name: 'new' })
console.log(items) // [{ name: 'a' }, { name: 'new' }, { name: 'c' }]
// 元の配列を書き換えない場合
const newItems = items.slice().splice(1, 1, { name: 'new' })
Before
const newItems = items.with(1, { name: 'new' })
console.log(items) // [{ name: 'a' }, { name: 'b' }, { name: 'c' }]
console.log(newItems) // [{ name: 'a' }, { name: 'new' }, { name: 'c' }]
または
const newItems = items.toSpliced(1, 1, { name: 'new' })
console.log(items) // [{ name: 'a' }, { name: 'b' }, { name: 'c' }]
console.log(newItems) // [{ name: 'a' }, { name: 'new' }, { name: 'c' }]