Кратко
СкопированоМетод values
возвращает новый объект-итератор, созданный из значений элементов массива. Подробнее о том, что такое итератор, можно прочитать в статье Итератор.
Пример
СкопированоСоздадим объект-итератор и получим его значения с помощью for
:
const array = [1, 2, 3]const iterator = array.values()for (const item of iterator) { console.log(item)}// 1// 2// 3
const array = [1, 2, 3] const iterator = array.values() for (const item of iterator) { console.log(item) } // 1 // 2 // 3
Как пишется
СкопированоArray
не имеет аргументов.
Array
возвращает новый объект-итератор, реализующий протокол перебора массива.
Как понять
СкопированоМассив в JavaScript имеет различные методы для перебора элементов. Например, map
или for
. Но иногда удобнее работать не с самим массивом, а с итерируемым объектом. Создать такой объект из массива позволяет метод values
.
Метод values
как функция доступен также с помощью вызова Array
:
const array = [1, 2, 3]console.log(array.values === array[Symbol.iterator])// true
const array = [1, 2, 3] console.log(array.values === array[Symbol.iterator]) // true
Array
не нужно путать со статическим методом Object
, который возвращает массив значений перечисляемых свойств объекта.
Подсказки
Скопировано💡 Если массив имеет незаполненные элементы, то объект-итератор, созданный при вызове values
, вернёт при обходе undefined
как значение для всех незаполненных элементов:
const colors = []colors[2] = 'crimson'for (const color of colors.values()) { console.log(color)}// undefined// undefined// crimson
const colors = [] colors[2] = 'crimson' for (const color of colors.values()) { console.log(color) } // undefined // undefined // crimson
💡 Объект-итератор, созданный при вызове values
, можно преобразовать обратно в массив с помощью метода Array
:
const numbersIterator = [1, 2, 3, 4].values()const numbers = Array.from(numbersIterator)console.log(numbers)// [1, 2, 3, 4]
const numbersIterator = [1, 2, 3, 4].values() const numbers = Array.from(numbersIterator) console.log(numbers) // [1, 2, 3, 4]