Baseline 2023
Newly available
ÐеÑод with()
ÑкземплÑÑов Array
возвÑаÑÐ°ÐµÑ Ð½Ð¾Ð²Ñй маÑÑив, в коÑоÑом ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¿Ð¾ ÑÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ Ð·Ð°Ð¼ÐµÐ½Ñн ÑказаннÑм знаÑением. ЯвлÑеÑÑÑ ÐºÐ¾Ð¿Ð¸ÑÑÑÑей веÑÑией Ð·Ð°Ð¼ÐµÐ½Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÑлеменÑа Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑкобоÑной запиÑи.
arrayInstance.with(index, value)
ÐаÑамеÑÑÑ
index
ÐÑÑÑиÑÑваемÑй Ð¾Ñ Ð½ÑÐ»Ñ Ð¸Ð½Ð´ÐµÐºÑ ÑлеменÑа, знаÑение коÑоÑого надо измениÑÑ, пÑеобÑазованнÑй в Ñелое ÑиÑло.
-array.length <= index < 0
, Ñо иÑполÑзÑеÑÑÑ index + array.length
.RangeError
.value
Ðовое знаÑение изменÑемого ÑлеменÑа.
ÐовÑй маÑÑив, в коÑоÑом знаÑение ÑлеменÑа Ñ Ð¸Ð½Ð´ÐµÐºÑом index
изменено на новое знаÑение value
.
RangeError
ÐозникаеÑ, еÑли index >= array.length
или index < -array.length
.
ÐеÑод with()
изменÑÐµÑ Ð·Ð½Ð°Ñение ÑлеменÑа маÑÑива Ñ ÑказаннÑм индекÑом, возвÑаÑÐ°Ñ Ð½Ð¾Ð²Ñй маÑÑив Ñ Ð¸Ð·Ð¼ÐµÐ½ÑннÑм знаÑением ÑÑого ÑлеменÑа. ÐÑÑ
однÑй маÑÑив не изменÑеÑÑÑ. ÐозволÑÐµÑ ÑоздаваÑÑ ÑепоÑÐºÑ Ð²Ñзовов Ð´Ð»Ñ Ð¾Ð±ÑабоÑки маÑÑивов.
СоÑеÑÐ°Ñ with()
Ñ at()
, можно иÑполÑзоваÑÑ Ð¾ÑÑиÑаÑелÑнÑе индекÑÑ Ð´Ð»Ñ ÑÑÐµÐ½Ð¸Ñ Ð¸ запиÑи маÑÑивов.
ÐеÑод with()
никогда не возвÑаÑÐ°ÐµÑ ÑазÑежÑннÑй маÑÑив. ÐÑли иÑÑ
однÑй маÑÑив ÑазÑежÑннÑй, Ñо в новом маÑÑиве пÑÑÑÑе ÑлоÑÑ Ð±ÑдÑÑ Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ Ð½Ð° undefined
.
ÐеÑод with()
ÑвлÑеÑÑÑ ÑнивеÑÑалÑнÑм. ÐÐ»Ñ ÐµÐ³Ð¾ ÑабоÑÑ Ð½ÐµÐ¾Ð±Ñ
одимо ÑолÑко, ÑÑÐ¾Ð±Ñ Ð·Ð½Ð°Ñение this
имело ÑвойÑÑво length
и ÑвойÑÑва Ñ ÑелоÑиÑленнÑми индекÑами.
const arr = [1, 2, 3, 4, 5];
console.log(arr.with(2, 6)); // [1, 2, 6, 4, 5]
console.log(arr); // [1, 2, 3, 4, 5]
Создание ÑепоÑки вÑзовов
С помоÑÑÑ Ð¼ÐµÑода with()
можно обновиÑÑ Ð¾Ð´Ð¸Ð½ ÑлеменÑ, а заÑем пÑимениÑÑ Ð´ÑÑгие меÑÐ¾Ð´Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑивÑегоÑÑ Ð¼Ð°ÑÑива.
const arr = [1, 2, 3, 4, 5];
console.log(arr.with(2, 6).map((x) => x ** 2)); // [1, 4, 36, 16, 25]
ÐÑполÑзование with() Ñ ÑазÑежÑннÑми маÑÑивами
ÐеÑод with()
вÑегда ÑоздаÑÑ Ð¿Ð»Ð¾ÑнÑй маÑÑив.
const arr = [1, , 3, 4, , 6];
console.log(arr.with(0, 2)); // [2, undefined, 3, 4, undefined, 6]
ÐÑзов with() Ð´Ð»Ñ Ð¾Ð±ÑекÑов, не ÑвлÑÑÑиÑ
ÑÑ Ð¼Ð°ÑÑивами
ÐеÑод with()
ÑоздаÑÑ Ð¸ возвÑаÑÐ°ÐµÑ Ð½Ð¾Ð²Ñй маÑÑив. Ðн ÑиÑÐ°ÐµÑ ÑвойÑÑво length
и обÑаÑаеÑÑÑ Ðº ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ ÑвойÑÑвÑ, клÑÑ ÐºÐ¾ÑоÑого ÑвлÑеÑÑÑ Ð½ÐµÐ¾ÑÑиÑаÑелÑнÑм ÑиÑлом менÑÑим length
. ÐÑи обÑаÑении к ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ ÑвойÑÑÐ²Ñ this
ÑлеменÑÑ Ð¼Ð°ÑÑива Ñ Ð¸Ð½Ð´ÐµÐºÑом, ÑавнÑм клÑÑÑ ÑÑого ÑвойÑÑва, пÑиÑваиваеÑÑÑ Ð·Ð½Ð°Ñение ÑÑого ÑвойÑÑва. РиÑоге ÑлеменÑÑ Ð¼Ð°ÑÑива Ñ Ð¸Ð½Ð´ÐµÐºÑом index
пÑиÑваиваеÑÑÑ value
.
const arrayLike = {
length: 3,
unrelated: "foo",
0: 5,
2: 4,
3: 3, // игноÑиÑÑеÑÑÑ, Ñак как длина Ñавна 3
};
console.log(Array.prototype.with.call(arrayLike, 0, 1));
// [ 1, undefined, 4 ]
СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе Ñакже
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4