← Назад к вопросам

Что такое Object.values?

1.8 Middle🔥 111 комментариев
#JavaScript Core

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI4 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое Object.values()?

Object.values() — это стандартный статический метод объекта Object в JavaScript, который появился в ECMAScript 2017 (ES8). Он предназначен для получения всех значений свойств переданного объекта и возвращает их в виде массива.

Основная цель и отличие от других методов

Основная задача Object.values() — предоставить простой и эффективный способ получения значений из объекта, аналогично тому, как Object.keys() возвращает ключи. Это дополняет семейство методов для работы с объектами:

  • Object.keys(obj) — возвращает массив ключей (имен свойств).
  • Object.values(obj) — возвращает массив значений свойств.
  • Object.entries(obj) — возвращает массив пар [ключ, значение].

Синтаксис и пример использования

const user = {
    name: 'Алексей',
    age: 30,
    profession: 'Frontend Developer'
};

const values = Object.values(user);
console.log(values); // Вывод: ['Алексей', 30, 'Frontend Developer']

Как работает метод

Object.values() принимает один аргумент — объект, и выполняет следующие шаги:

  1. Итерируется по собственным (не inherited) и enumerable (перечисляемым) свойствам объекта.
  2. Для каждого такого свойства добавляет его значение в итоговый массив.
  3. Возвращает этот массив. Порядок значений в массиве соответствует порядку ключей, который обеспечивается Object.keys(). Это обычно порядок добавления свойств для обычных объектов, но может быть сложным для свойств с числовыми ключами или символами.

Важные особенности и ограничения

  • Не включает свойства из прототипа: Метод работает только со свойствами, принадлежащими непосредственно объекту, игнорируя свойства, inherited из его цепочки прототипов.
  • Не включает non-enumerable свойства: Свойства, которые не являются перечисляемыми (например, некоторые свойства встроенных объектов или свойства, созданные с Object.defineProperty() с флагом enumerable: false), будут пропущены.
const obj = {};
Object.defineProperty(obj, 'hidden', {
    value: 'secret',
    enumerable: false
});
obj.visible = 'open';

console.log(Object.values(obj)); // Вывод: ['open']
  • Работает с любыми типами значений: В массив могут попасть значения любого типа — строки, числа, объекты, функции, null, undefined и т.д.
const mixedObj = {
    id: 1,
    greet: function() { return 'Hello'; },
    nested: { key: 'value' },
    empty: null
};
console.log(Object.values(mixedObj)); // Вывод: [1, ƒ, {key: 'value'}, null]

Практическое применение в разработке

Object.values() часто используется в следующих сценариях:

1. Итерация по значениям объекта

Когда нужна обработка только значений, без ключей.

const config = { theme: 'dark', locale: 'ru', debug: true };
Object.values(config).forEach(value => {
    console.log(`Настройка: ${value}`);
});

2. Проверка наличия конкретного значения в объекте

const permissions = { read: true, write: false, delete: false };
const hasTruePermission = Object.values(permissions).includes(true);
console.log(hasTruePermission); // Вывод: true

3. Суммирование или агрегация значений

const sales = { january: 1000, february: 1500, march: 2000 };
const totalSales = Object.values(sales).reduce((sum, amount) => sum + amount, 0);
console.log(totalSales); // Вывод: 4500

4. Совместное использование с Object.entries() и Object.keys()

Для комплексных преобразований объектов.

const original = { a: 10, b: 20 };
// Создание нового объекта с удвоенными значениями
const doubled = Object.fromEntries(
    Object.entries(original).map(([key, val]) => [key, val * 2])
);
console.log(doubled); // Вывод: {a: 20, b: 40}

Сравнение с for...in циклом

Object.values() предлагает более декларативный и чистый способ получения значений, чем традиционный цикл for...in, который требует дополнительной проверки (hasOwnProperty) для исключения inherited свойств и явного сохранения значений в массив.

// Старый подход с for...in
const valuesArray = [];
for (let key in user) {
    if (user.hasOwnProperty(key)) {
        valuesArray.push(user[key]);
    }
}

// Новый подход с Object.values()
const modernValuesArray = Object.values(user);

Object.values() является важным инструментом в современном JavaScript, который упрощает код, улучшает его читаемость и способствует использованию функциональных подходов при работе с объектами. Его понимание и правильное применение — обязательная часть навыков Frontend Developer.

Что такое Object.values? | PrepBro