Кратко
СкопированоМетод 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]