Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. Стандартные встроенные объекты
  5. Array
  6. Array.prototype.with()

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

Array.prototype.with()

Baseline 2023
Newly available

Since ⁨July 2023⁩, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Методwith() экземпляровArray возвращает новый массив, в котором элемент по указанному индексу заменён указанным значением. Является копирующей версией замены значения элемента с помощьюскобочной записи.

Синтаксис

js
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 и свойства с целочисленными индексами.

Примеры

Создание нового массива с одним изменённым элементом

js
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() можно обновить один элемент, а затем применить другие методы для получившегося массива.

js
const arr = [1, 2, 3, 4, 5];console.log(arr.with(2, 6).map((x) => x ** 2)); // [1, 4, 36, 16, 25]

Использование with() с разрежёнными массивами

Методwith() всегда создаёт плотный массив.

js
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.

js
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 ]

Спецификации

Specification
ECMAScript® 2026 Language Specification
# sec-array.prototype.with

Совместимость с браузерами

Смотрите также

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp