как выделить подмножество свойств объекта в javascript
Ответы
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