Клавиша / esc

.values()

Возвращает объект-итератор значений элементов массива.

Время чтения: меньше 5 мин

Кратко

Скопировано

Метод values() возвращает новый объект-итератор, созданный из значений элементов массива. Подробнее о том, что такое итератор, можно прочитать в статье «Итератор».

Пример

Скопировано

Создадим объект-итератор и получим его значения с помощью for...of:

        
          
          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.values() не имеет аргументов.

Array.values() возвращает новый объект-итератор, реализующий протокол перебора массива.

Как понять

Скопировано

Массив в JavaScript имеет различные методы для перебора элементов. Например, map() или forEach(). Но иногда удобнее работать не с самим массивом, а с итерируемым объектом. Создать такой объект из массива позволяет метод values().

Метод values() как функция доступен также с помощью вызова Array.prototype[Symbol.iterator]():

        
          
          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.values() не нужно путать со статическим методом Object.values(), который возвращает массив значений перечисляемых свойств объекта.

Подсказки

Скопировано

💡 Если массив имеет незаполненные элементы, то объект-итератор, созданный при вызове 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.from:

        
          
          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]