как выделить подмножество свойств объекта в javascript

Аватар пользователя Ivan Gagarinov
Ivan Gagarinov
22 декабря 2024

Эту задачу можно выполнить с помощью деструктуризации:

const person = {
  name: 'Alice',
  age: 25,
  gender: 'female'
};

// Выделение свойств name и age
const { name, age } = person;

console.log(name); // Alice
console.log(age);  // 25

Вы можете создать новый объект, вручную задав нужные свойства:

const person = {
  name: 'Alice',
  age: 25,
  gender: 'female',
  country: 'USA'
};

// Создание нового объекта из подмножества свойств
const subset = {
  name: person.name,
  age: person.age
};

console.log(subset); // { name: 'Alice', age: 25 }

Если вам нужно выбрать динамическое подмножество свойств, можете использовать методы Object.entries и Object.fromEntries:

const person = {
  name: 'Alice',
  age: 25,
  gender: 'female'
};

const keysToPick = ['name', 'age'];

// Фильтрация свойств
const subset = Object.fromEntries(
  Object.entries(person).filter(([key]) => keysToPick.includes(key))
);

console.log(subset); // { name: 'Alice', age: 25 }

Библиотеки, такие как lodash, предоставляют функции для работы с объектами. Например, метод pick позволяет легко создавать новый объект, содержащий только указанные свойства:

const _ = require('lodash'); // Не забудьте установить lodash

const person = {
  name: 'Alice',
  age: 25,
  gender: 'female'
};

const subset = _.pick(person, ['name', 'age']);

console.log(subset); // { name: 'Alice', age: 25 }

Вы можете создать свою собственную функцию для выбора подмножества свойств из объекта:

function pick(obj, keys) {
  return Object.fromEntries(
    Object.entries(obj).filter(([key]) => keys.includes(key))
  );
}

const person = {
  name: 'Alice',
  age: 25,
  gender: 'female'
};

const subset = pick(person, ['name', 'age']);

console.log(subset); // { name: 'Alice', age: 25 }
0 0
Познакомьтесь с основами JavaScript бесплатно