Как сделать чтобы функция возвращала тип values с ключами обьекта ? (снизу начало моего кода в тупике)
нужно сделать функцию, которая принимает обьект и возвращает его схему, обьект с теми же ключами, а в качестве значений должны быть используемые типы данных
const robots = {
version: 16,
name: 'Cleaner 3000',
released: true,
creator: { name: 'Vlad' },
};
function getRobotSchema(robot) {
let result = new Object();
const y = Object.values(robot);
const x = Object.keys(robot);
for (let i = 0; i < x.length; i++) {
result[x[i]] = 0;
};
for (let i = 0; i < y.length; i++) {
result.values = typeof(y[i]);
};
return result;
};
console.log(getRobotSchema(robots));
Ответы (3 шт):
Автор решения: Darth KYL
→ Ссылка
думаю можно сделать чтото в этом роде
const robots = {
version: 16,
name: 'Cleaner 3000',
released: true,
creator: { name: 'Vlad' },
};
function getRobotSchema(robot) {
let result = {}
for (let key in robot ){
result[ key ] = typeof( robot[ key ] );
}
return result;
};
console.log(getRobotSchema(robots));
Автор решения: Aziz Umarov
→ Ссылка
Можно так получить
const robots = {
version: 16,
name: 'Cleaner 3000',
released: true,
creator: { name: 'Vlad' },
};
function getRobotSchema(robot) {
return Object.keys(robot).reduce((result, key)=>(result[key]=typeof(robot[key]), result), {});
};
console.log(getRobotSchema(robots));
Автор решения: Touch me
→ Ссылка
Ещё можно вот так:
const robots = [
{ version: 15, name: 'Cleaner 2000', released: true, creator: { name: 'Ivan' } },
{ version: 16, name: 'Cleaner 3000', released: true, creator: { name: 'Vlad' } },
];
const getRobotSchema = robot =>
Object.fromEntries(
Object.entries(robot).map(([name, value]) => {
// or you can use return [name, value.constructor];
if (typeof value !== 'object') return [name, typeof value];
return [name, Array.isArray(value) ? value.map(getRobotSchema) : getRobotSchema(value)];
})
);
console.log(getRobotSchema(robots[0]));
console.log(getRobotSchema(robots[1]));