Уровень 9.10 задачника JavaScript

Задание 1

Дана таблица. Юзер кликает по очереди на две ячейки, выделяя их. Сделайте так, чтобы красным цветом выделились все ячейки, расположенные по порядку между теми, на которые кликнул юзер.

Задание 2

Напишите код, который определит максимальный уровень вложенности многомерного массива.

Задание 3

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

javascriptlet 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: ['массив с данными']
  },
}

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

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