Как из объекта получить объекты только с необходимыми ключами и значениями. JS
К примеру есть объект с объектами:
obj: {
obj1: {
key1: 1,
key2: 2,
key3: 3,
},
obj2: {
key1: 1,
key2: 2,
key3: 3,
},
obj3: {
key1: 1,
key2: 2,
key3: 3,
}
}
Мне нужно вывести те же объекты, но без некоторых ключей
obj: {
obj1: {
key1: 1,
key2: 2,
},
obj2: {
key1: 1,
key2: 2,
},
obj3: {
key1: 1,
key2: 2,
}
}
Ответы (1 шт):
Автор решения: vsemozhebuty
→ Ссылка
Один из вариантов в функциональном стиле:
const obj = {
obj1: {
key1: 1,
key2: 2,
key3: 3,
},
obj2: {
key1: 1,
key2: 2,
key3: 3,
},
obj3: {
key1: 1,
key2: 2,
key3: 3,
}
};
const keysToFilterOut = ['key3'];
const filteredObj = Object.fromEntries(
Object.entries(obj).map(
([key, value]) => [key, Object.fromEntries(
Object.entries(value).filter(
([subkey]) => !keysToFilterOut.includes(subkey)
)
)]
)
);
console.log(filteredObj);
Или в процедурном стиле:
const obj = {
obj1: {
key1: 1,
key2: 2,
key3: 3,
},
obj2: {
key1: 1,
key2: 2,
key3: 3,
},
obj3: {
key1: 1,
key2: 2,
key3: 3,
}
};
const keysToFilterOut = ['key3'];
const filteredObj = {};
for (const [key, value] of Object.entries(obj)) {
filteredObj[key] = {};
for (const [subkey, subvalue] of Object.entries(value)) {
if (!keysToFilterOut.includes(subkey)) {
filteredObj[key][subkey] = subvalue;
}
}
}
console.log(filteredObj);