Хорошо, я знаю, что название немного сбивает с толку (может быть, много), поэтому позвольте мне объяснить. В такой переменной типа Object, как схема Мангуста, могут быть типы String, Number, Boolean и т. Д. Но что, если тип является новым Object? А что, если у этого объекта есть другой объект внутри?
Допустим, я получил эту схему здесь:
user: {
username: 'bob1',
password: '1234',
email: 'someone@example.com',
profile: {
name: {
first: 'Bob',
last: 'Marley'
},
gender: 'male',
country: 'US'
},
userKeys: {
username: { show: true },
password: { show: false },
email: { show: 'maybe' },
profile: {
name: {
first: { show: true },
last: { show: true }
},
gender: { show: false },
country: { show: 'maybe' }
}
}
}
и я хочу создать новый временный объект в моем файле на основе userKeys
этого пользователя, возвращая только значения из схемы, имеющие значение true
или 'maybe'
из полей userKeys
. Как я могу сделать это, перебирая не только ключи от базовой структуры, но и ключи внутри объекта, который находится внутри другого объекта? Я пытался сделать это с
Object.keys(user.userKeys).forEach((key) => {
const cur = user[key];
if (typeof cur === Object) {
Object.keys(user.userKeys[key]).forEach((ok) => {
console.log(ok, user.userKeys[ok].show);
myObj.push(cur);
});
}
});
но он не будет регистрировать что-либо, что является частью Объекта (например: profile.name или profile.country).
Я ценю любые советы.
Хорошего дня