вопросы пишите мне в телеграмм +375298176892
можно скачать офлайн версию сайта: code.mu old.code.mu

Добавление элементов в многомерные объекты JavaScript

Пусть у нас дан следующий объект со студентами:

let students = { 'group1': ['student11', 'student12', 'student13'], 'group2': ['student21', 'student22', 'student23'], 'group3': ['student31', 'student32'], };

Давайте добавим еще одного студента в первую группу:

students.group1.push('student14');

Давайте теперь сделаем еще одну, четвертую группу и добавим в нее студента:

students.group4 = []; students.group4.push('student41');

Если забыть вначале создать группу, а сразу попытаться добавить студента - будет ошибка, так как мы попытаемся добавить элемент в то, что не является массивом (не созданная группа будет undefined):

//students.group4 = []; - забыли создать группу students.group4.push('student41'); // будет ошибка

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

let affairs = { '2019-12-28': ['дело11', 'дело12', 'дело13'], '2019-12-39': ['дело21', 'дело22', 'дело23'], '2019-12-30': ['дело31', 'дело32', 'дело33'], }

Добавьте еще одно дело в дату '2019-12-29'. Добавьте еще два дела в дату '2019-12-31'.

Усложним хранение

Пусть мы храним имена студентов. При этом студенты разбиты на группы, а группы в свою очередь - на подгруппы:

let students = { 'group1' { 'subgroup11': ['student111', 'student112', 'student113'], 'subgroup12': ['student121', 'student122', 'student123'], }, 'group2' { 'subgroup21': ['student211', 'student212', 'student213'], 'subgroup22': ['student221', 'student222', 'student223'], }, 'group3' { 'subgroup31': ['student311', 'student312', 'student313'], 'subgroup32': ['student321', 'student322', 'student323'], }, };

Добавьте нового студента в подгруппу 'subgroup11'.

Добавьте в первую группу еще одну подгруппу.

Сделайте четвертую группу, в ней сделайте подгруппу и добавьте в нее двух новых студентов.

Автоматическое добавление

Пусть у нас опять есть наш объект со студентами:

let students = { 'group1': ['student11', 'student12', 'student13'], 'group2': ['student21', 'student22', 'student23'], 'group3': ['student31', 'student32'], };

Давайте напишем более универсальный код добавления нового студента.

Будем сначала проверять существование группы и, если она существует - будем добавлять данные в нее, а если не существует - сначала создавать эту группу, а потом уже добавлять в нее данные:

if (students['group4'] !== undefined) { students['group4'].push('student41'); } else { students['group4'] = []; students['group4'].push('student41'); }

Этот код можно переписать более коротко вот так:

if (students['group4'] === undefined) { students['group4'] = []; } students['group4'].push('student41');

Давайте разберемся, как работает этот код. Если группа не существует - мы создаем ее в ифе. Получится, что после ифа групп в любом случае существует - либо мы создали ее в ифе, либо она уже была ранее.

Давайте теперь оформим этот код в виде функции, которая первым параметром будет принимать название группы, а вторым - имя студента:

function addStudent(group, name) { if (students[group] === undefined) { students[group] = []; } students[group].push(name); }

В данной функции массив со студентами будет глобальной переменной, то есть этот массив будет просто определен снаружи функции, а мы будем менять его внутри:

let students = []; // массив студентов function addStudent(group, name) { // здесь доступен массив студентов }

Давайте соберем весь код вместе и добавим двух студентов - первого в существующую группу, а второго - в несуществующую:

let students = { 'group1': ['student11', 'student12', 'student13'], 'group2': ['student21', 'student22', 'student23'], 'group3': ['student31', 'student32'], }; addStudent('group1', 'student14'); addStudent('group4', 'student41'); console.log(students); function addStudent(group, name) { if (students[group] === undefined) { students[group] = []; } students[group].push(name); }

В результате наш массив со студентами станет вот таким:

{ 'group1': ['student11', 'student12', 'student13', 'student14'], 'group2': ['student21', 'student22', 'student23'], 'group3': ['student31', 'student32'], 'group4': ['student41'], };

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

let affairs = { '2019-12-28': ['дело11', 'дело12', 'дело13'], '2019-12-39': ['дело21', 'дело22', 'дело23'], '2019-12-30': ['дело31', 'дело32', 'дело33'], }

Сделайте функцию addAffair, которая будет добавлять новое дело в заданную дату. Пусть функция первым параметром принимает дату, а вторым - дело.

Дана вот такая структура для хранения студентов:

let students = { 'group1' { 'subgroup11': ['student111', 'student112', 'student113'], 'subgroup12': ['student121', 'student122', 'student123'], }, 'group2' { 'subgroup21': ['student211', 'student212', 'student213'], 'subgroup22': ['student221', 'student222', 'student223'], }, 'group3' { 'subgroup31': ['student311', 'student312', 'student313'], 'subgroup32': ['student321', 'student322', 'student323'], }, };

Сделайте функцию addStudent, которая будет добавлять нового студента. Пусть функция первым параметром принимает группу, а вторым - подгруппу, а третьим - имя студента.

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

let affairs = { 2018: { 11: { 29: ['дело111', 'дело112', 'дело113'], 30: ['дело121', 'дело122', 'дело123'], }, 12: { 30: ['дело211', 'дело212', 'дело213'], 31: ['дело221', 'дело222', 'дело223'], }, }, 2019: { 12: { 29: ['дело311', 'дело312', 'дело313'], 30: ['дело321', 'дело322', 'дело323'], 31: ['дело331', 'дело332', 'дело333'], } }, }

Сделайте функцию addAffair, которая будет добавлять новое дело в заданную дату. Пусть функция первым параметром принимает год, вторым - месяц, третьим - день, а четвертым - дело.