JavaScript метод Object.values()

Определение и применение

JavaScript метод Object.values() возвращает массив собственных перечислимых значений свойств и методов указанного объекта.

Под перечислимыми свойствами стоит понимать те, атрибут enumerable которых имеет значение true, вследствие чего они будут перечислимы в циклах, например в цикле for...in. Атрибуты в свою очередь описываются дескрипторами свойств – это обычные объекты JavaScript, которые описывают атрибуты и значение свойства. Подробную информацию о дескрипторах свойств и атрибутах вы можете получить в описании метода defineProperty(), который позволяет определить новое или изменить существующее свойство объекта, описывая его дескрипторами.

null и undefined вызывают TypeError; другие примитивы преобразуются в объекты-обёртки. Строка имеет собственные перечислимые индексные свойства.

Учитываются только собственные перечислимые свойства со строковыми ключами; символьные ключи пропускаются.

Поддержка браузерами

Спецификация: ecma262

Поддерживается во всех основных браузерах с 2017 года.

Показать браузеры
Совместимостьjavascript.builtins.Object.values
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
values✓54✓14✓47✓41✓10.1✓54✓47✓41✓10.3✓6.0✓54✓10.3

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис

JavaScript
Object.values( obj );

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

ECMAScript: Object.values()

Значения параметров

Object: справочные сведения
Параметр Описание
obj Объект, перечислимые собственные свойства и методы которого должны быть возвращены в виде массива. Обязательное значение.

Исключения

Object: справочные сведения
Тип исключения Описание
TypeError Возникает в том случае, если методу в качестве значения параметра передается undefined или null (не удается преобразовать значение undefined или null в объект).

Примеры, попробуйте сами

В примере «Значения без унаследованных и символьных ключей» показан результат вызова метода.

Значения без унаследованных и символьных ключей

Измените свойства исходного объекта и сравните результат до и после вызова метода.

index.html
HTML
<!doctype html>
<html lang="ru">
  <head>
    <meta charset="UTF-8" />
    <title>Значения без унаследованных и символьных ключей</title>
  </head>
  <body>
    <p>Результат выполнения выводится в консоль.</p>
  </body>
</html>
main.js
JavaScript
var obj = { a: 1, b: 2, c: () => console.log('hello') }
var newArr = Object.values(obj)
console.log(newArr) // переменная содержит значение [ 1, 2, () => console.log( "hello" ) ] — функция в выводе примера показана как null

// изменяем в объекте существующее свойство
Object.defineProperty(obj, 'c', {
    enumerable: false, // устанавливаем, что свойство не перечислимо
})

console.log(Object.values(obj)) // переменная содержит значение [ 1, 2 ]

var str = 'Hello'
var newArr = Object.values(str)
console.log(newArr) // переменная содержит значение [ "H", "e", "l", "l", "o"]

var arr = ['a', 'b', 'c']
var newArr = Object.values(arr)
console.log(newArr) // переменная содержит значение [ "a", "b", "c" ]

var objWithSymbol = { [Symbol('123')]: '123', a: 'test' }
var newArr = Object.values(objWithSymbol) // игнорирует свойства, ключом которых является символ
console.log(newArr) // переменная содержит значение [ "test" ]

try {
    Object.values(undefined)
} catch (error) {
    console.log(error.name)
}
try {
    Object.values(null)
} catch (error) {
    console.log(error.name)
}