Пропоузал с недеструктивными методами изменения массивов


В конце января – начале февраля 2023 будет проходить митинг TC39, на котором, среди прочего, stage 4 будет брать пропоузал с недеструктивными методами изменения массивов:

Array.prototype.toReversed();
Array.prototype.toSorted(compareFn);
Array.prototype.toSpliced(start, deleteCount, ...items);
Array.prototype.with(index, value);

Суть методов toReversed, toSorted и toSpliced сходу понятна: это просто те же обычные reverse, sort и splice, которые возвращают новый массив вместо изменения старого:

[3, 10, 1].toReversed();
// [1, 10, 3]
[3, 10, 1].toSorted();
// [1, 10, 3]
[3, 10, 1].toSpliced(1, 2, 5, 6);
// [3, 5, 6]

А вот метод with уже сходу не очень понятен. Он про точечную замену: меняет один элемент массива на указанном индексе на другой:

[3, 10, 1].with(2, 0);
// [3, 10, 0]

Интересно ещё то, что эти методы уже доступны в бетке Chrome 110 без флага, то есть вероятно после встречи TC39, когда пропоузал выдет на stage 4, скоро выкатится и стабильный Chrome.