Преобразовать объект в массив массивов
Створи функцію getRobotSchema, яка приймає об'єкт robot і повертає набір ключів і типи значень, які в них мають зберігатися. Результат має виглядати ось так: [[key, type], [key, type]...]
Приклад:
const robot = {
version: 16,
name: 'Cleaner 3000',
coords: [345, 12],
};
getRobotSchema(robot) === [['version', 'number'], ['name', 'string'], ['coords', 'object']]
Пока дорешала вот до этого момента, но он выводит в консоль только одно последнее значение массива, а остальные два выводит как null
function getRobotSchema(robot) {
const robotLength = Object.keys(robot).length;
const typeRobot = Array(robotLength);
//console.log(typeRobot.length);
for (const i = 0; i < typeRobot.length; i++) {
for (const key in robot) {
console.log(key);
console.log(typeof robot[key]);
typeRobot[i] = [key, typeof robot[key]];
}
return typeRobot;
}
Ответы (1 шт):
Можно сделать все гораздо проще, а именно использовать метод Object.entries, который вернет уже почти нужный результат.
То что будет после Object.entries(robot) :
[['version', 16], ['name', "Cleaner 3000"], ['coords', [345, 12]]]
Используем map чтобы преобразовать получившийся массив:
Всего будет три итерации в
map, так как в массиве три элемента(элементы перебираемого массива в данном случае тоже массивы)Если использовать map таким образом:
entries.map(arr => ), то на каждой итерации вarrбудет последовательно лежать следующие массивы1-я итерация: ['version', 16] 2-я итерация: ['name', "Cleaner 3000"] 3-я итерация: ['coords', [345, 12]]Но чтобы добраться до внутренностей массива используем деструктуризацию:
([key,value]). Теперьmapвыглядит таким образомentries.map(([key,value]) =>и теперь на каждой итерации
в key будет:
1-я итерация: 'version'
2-я итерация: 'name'
3-я итерация: 'coords'
в value:
1-я итерация: 16
2-я итерация: "Cleaner 3000"
3-я итерация: [345, 12]
Останется только изменить значения value на typeof(value), а key оставить без изменений, поэтому из map возвращаем следующий массив [key, typeof(value)]
function getRobotSchema(robot) {
const entries = Object.entries(robot)
return entries.map(([key,value]) => [key, typeof(value)])
}
const robot = {
version: 16,
name: 'Cleaner 3000',
coords: [345, 12],
}
console.log(getRobotSchema(robot))