Клавиша / esc

.keys()

.keys() возвращает итератор для обхода значений коллекции Set.

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

Кратко

Скопировано

Возвращает итератор для обхода значений коллекции Set в порядке добавления значений в коллекцию.

Обычно метод keys() возвращает итератор для обхода ключей коллекции, но так как коллекция Set не имеет ключей, то для поддержки универсального интерфейса итератор возвращает значения.

Метод используется редко, правильнее использовать метод values(), так как он даёт лучшую читаемость коду.

Как пишется

Скопировано

Метод keys() вызывается без аргументов. Вызов метода возвращает итератор, который содержит значения коллекции в порядке их добавления от старых к новым:

        
          
          const watchList = new Set(['Сияние', 'Интерстеллар', 'Казино'])const keys = watchList.keys()console.log(keys)// Set Iterator
          const watchList = new Set(['Сияние', 'Интерстеллар', 'Казино'])
const keys = watchList.keys()

console.log(keys)
// Set Iterator

        
        
          
        
      

Итератор можно обойти с помощью for...of:

        
          
          for (const key of keys) {  console.log(key)}// 'Сияние'// 'Интерстеллар'// 'Казино'
          for (const key of keys) {
  console.log(key)
}

// 'Сияние'
// 'Интерстеллар'
// 'Казино'

        
        
          
        
      

Итератор можно превратить в массив с помощью спред-синтаксиса:

        
          
          const movies = [...keys]console.log(movies)// ['Сияние', 'Интерстеллар', 'Казино']
          const movies = [...keys]
console.log(movies)
// ['Сияние', 'Интерстеллар', 'Казино']

        
        
          
        
      

На практике

Скопировано

Николай Лопин советует

Скопировано

🛠 Метод бесполезный, обойти Set можно с помощью forEach() или for...of:

        
          
          const watchList = new Set(['Сияние', 'Интерстеллар', 'Казино'])for (const movie of watchList) {  console.log(movie)}// 'Сияние'// 'Интерстеллар'// 'Казино'
          const watchList = new Set(['Сияние', 'Интерстеллар', 'Казино'])

for (const movie of watchList) {
  console.log(movie)
}

// 'Сияние'
// 'Интерстеллар'
// 'Казино'

        
        
          
        
      

Если нужно превратить Set в массив, то достаточно применить спред-синтаксис напрямую:

        
          
          const watchList = new Set(['Сияние', 'Интерстеллар', 'Казино'])const array = [...watchList]console.log(array)// ['Сияние', 'Интерстеллар', 'Казино']
          const watchList = new Set(['Сияние', 'Интерстеллар', 'Казино'])
const array = [...watchList]
console.log(array)
// ['Сияние', 'Интерстеллар', 'Казино']