мое новое расписание: пн-пт с 8.00 по 16.00 по москве, сб и вс - выходные; после 16.00 и на вых. отвечаю по возможности

Конвертация многомерных структур в JavaScript

Пусть у нас есть список юзеров, хранящийся в следующей структуре:

let users = [ { id: 11, name: 'name11', surname: 'surname11', }, { id: 14, name: 'name14', surname: 'surname14', }, { id: 17, name: 'name17', surname: 'surname17', }, ];

Давайте напишем код, который переформатирует наш массив вот в такой объект:

{ 11: { id: 11, name: 'name11', surname: 'surname11', }, 14: { id: 14, name: 'name14', surname: 'surname14', }, 17: { id: 17, name: 'name17', surname: 'surname17', }, }

Решим поставленную задачу с помощью цикла:

let result = {}; for (let user of users) { result[user.id] = user; } console.log(result);

Дан список городов и их стран, хранящийся в следующей структуре:

let data = [ { country: 'Россия', city: 'Москва', }, { country: 'Беларусь', city: 'Минск', }, { country: 'Россия', city: 'Питер', }, { country: 'Россия', city: 'Владивосток', }, { country: 'Украина', city: 'Львов', }, { country: 'Беларусь', city: 'Могилев', }, { country: 'Украина', city: 'Киев', }, ]

Напишите код, которой переделает структуру данных вот в такую:

{ 'Россия': [ 'Москва', 'Питер', 'Владивосток', ], 'Беларусь': [ 'Минск', 'Могилев' ], 'Украина': [ 'Киев', 'Львов' ], }

Дан список событий за определенные даты, хранящийся в следующей структуре:

let events = [ { date: '2019-12-29' event: 'name1' }, { date: '2019-12-31' event: 'name2' }, { date: '2019-12-29' event: 'name3' }, { date: '2019-12-30' event: 'name4' }, { date: '2019-12-29' event: 'name5' }, { date: '2019-12-31' event: 'name6' }, { date: '2019-12-29' event: 'name7' }, { date: '2019-12-30' event: 'name8' }, { date: '2019-12-30' event: 'name9' }, ]

Напишите код, которой переделает структуру данных вот в такую:

{ '2019-12-29': ['name1', 'name3', 'name5', 'name7'], '2019-12-30': ['name4', 'name8', 'name9'], '2019-12-31': ['name2', 'name6'], }

Дан список событий за определенные даты, хранящийся в следующей структуре:

let events = { '2019-12-29': ['name1', 'name3', 'name5', 'name7'], '2019-12-30': ['name4', 'name8', 'name9'], '2019-12-31': ['name2', 'name6'], }

Напишите код, которой переделает структуру данных вот в такую:

let events = [ { date: '2019-12-29' event: 'name1' }, { date: '2019-12-31' event: 'name2' }, { date: '2019-12-29' event: 'name3' }, { date: '2019-12-30' event: 'name4' }, { date: '2019-12-29' event: 'name5' }, { date: '2019-12-31' event: 'name6' }, { date: '2019-12-29' event: 'name7' }, { date: '2019-12-30' event: 'name8' }, { date: '2019-12-30' event: 'name9' }, ]

Даты

Пусть мы храним список дел за определенные даты вот в такой структуре:

let affairs = { '2018-11-29': ['массив данных'], '2018-11-30': ['массив данных'], '2018-12-30': ['массив данных'], '2018-12-31': ['массив данных'], '2019-12-29': ['массив данных'], '2019-12-30': ['массив данных'], '2019-12-31': ['массив данных'], }

Давайте напишем код, который переформатирует наш массив вот в такой объект:

{ '2018': { 11: { 29: ['массив данных'], 30: ['массив данных'], }, 12: { 30: ['массив данных'], 31: ['массив данных'], }, }, '2019': { 12: { 29: ['массив данных'], 30: ['массив данных'], 31: ['массив данных'], } }, }

Решим поставленную задачу следующим кодом:

let result = {}; for (let key in affairs) { let date = key.split('-'); let year = date[0]; let month = date[1]; let day = date[2]; if (result[year] == undefined) { result[year] = {}; } if (result[year][month] == undefined) { result[year][month] = {}; } result[year][month][day] = affairs[key]; } console.log(result);

Можно упросить код, используя деструктуризацию:

let result = {}; for (let key in affairs) { let [year, month,day]= key.split('-'); if (result[year] == undefined) { result[year] = {}; } if (result[year][month] == undefined) { result[year][month] = {}; } result[year][month][day] = affairs[key]; } console.log(result);

Дан список событий за определенные месяцы, хранящийся в следующей структуре:

let events = [ { date: '2019-12' event: 'name1' }, { date: '2019-12' event: 'name2' }, { date: '2019-11' event: 'name3' }, { date: '2019-11' event: 'name4' }, { date: '2020-10' event: 'name5' }, { date: '2020-10' event: 'name6' }, { date: '2020-11' event: 'name5' }, { date: '2020-11' event: 'name6' }, { date: '2020-12' event: 'name7' }, { date: '2020-12' event: 'name8' }, { date: '2020-12' event: 'name9' }, ]

Напишите код, которой переделает структуру данных вот в такую:

{ 2019: { 11: [массив событий], 12: [массив событий], } 2020: { 10: [массив событий], 11: [массив событий], 12: [массив событий], } }

Дан список каких-то данных за определенные даты, хранящийся в следующей структуре:

let data = [ { year: 2019, month: 11, day: 20, data: ['массив с данными'] }, { year: 2019, month: 11, day: 21, data: ['массив с данными'] }, { year: 2019, month: 12, day: 25, data: ['массив с данными'] }, { year: 2019, month: 12, day: 26, data: ['массив с данными'] }, { year: 2020, month: 10, day: 29, data: ['массив с данными'] }, { year: 2020, month: 10, day: 30, data: ['массив с данными'] }, { year: 2020, month: 11, day: 19, data: ['массив с данными'] }, { year: 2020, month: 11, day: 20, data: ['массив с данными'] }, }

Напишите код, которой переделает структуру данных в структуру вида:

{ год1: { месяц1: { день1: [массив данных], день2: [массив данных], день3: [массив данных], } месяц2: { день1: [массив данных], день2: [массив данных], день3: [массив данных], } } год2: { месяц1: { день1: [массив данных], день2: [массив данных], день3: [массив данных], } месяц2: { день1: [массив данных], день2: [массив данных], день3: [массив данных], } } }