PassFront
  1. PassFront
  2. База знаний
  3. Объекты и прототипы

Как получить значения объекта в JavaScript?

Объекты и прототипы

Значения объекта получают через `Object.values(obj)` (массив значений), `Object.entries(obj)` (пары ключ-значение), или перебором ключей с доступом `obj[key]`.

Object.values — массив значений

const user = { name: 'Ann', age: 25 };
Object.values(user); // ['Ann', 25]

Object.entries — пары [ключ, значение]

Object.entries(user); // [['name', 'Ann'], ['age', 25]]

for (const [key, value] of Object.entries(user)) {
  console.log(key, value);
}

Object.keys + доступ

Object.keys(user).forEach((key) => {
  console.log(user[key]); // значение по ключу
});

for...in (с осторожностью)

for (const key in user) {
  if (user.hasOwnProperty(key)) {
    console.log(user[key]); // включает унаследованные — фильтровать
  }
}

Различия методов

  • Object.values — только значения.
  • Object.keys — только ключи.
  • Object.entries — пары (удобно для итерации с ключом и значением).

Все три возвращают только собственные перечисляемые свойства (без прототипа), в порядке вставки (кроме целочисленных ключей).

Практика

// Сумма значений
const total = Object.values(prices).reduce((a, b) => a + b, 0);
// Преобразование объекта
const upper = Object.fromEntries(
  Object.entries(obj).map(([k, v]) => [k, v.toUpperCase()])
);

Коротко для собеседования

Значения объекта: Object.values(obj) (массив значений), Object.entries(obj) (пары [key, value] — удобно для итерации), или Object.keys(obj) + obj[key]. Все возвращают только собственные перечисляемые свойства. for...in включает унаследованные (фильтровать hasOwnProperty). Для трансформации — Object.fromEntries.

Другие вопросы раздела