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

Задание 1

Дана кнопка и блок с текстом. Текст по высоте не влазит в блок и скрыт. По клику на кнопку распахните блок на всю высоту.

Задание 2

Дана строка с текстом. Получите процентное содержание каждого символа текста в виде объекта, в котором ключами будут символы, а значениями - их процентное содержание.

Задание 3

Дан список ul и инпут. По мере ввода текста в инпут оставляйте видимыми только те li, текст которых начинается на текст, введенный в инпут.

Задание 4

Выведите на экран следующую пирамидку:

1
22
333
4444
55555
666666
7777777
88888888
999999999
Задание 5

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

javascriptlet data = [
  {
    country: 'country1',
    city:    'city11',
  },
  {
    country: 'country2',
    city:    'city21',
  },
  {
    country: 'country3',
    city:    'city31',
  },
  {
    country: 'country1',
    city:    'city12',
  },
  {
    country: 'country1',
    city:    'city13',
  },
  {
    country: 'country2',
    city:    'city22',
  },
  {
    country: 'country3',
    city:    'city31',
  },
]

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

javascript{
  'country1': [
    'city11', 'city12', 'city13',
  ],
  'country2': [
    'city21', 'city22'
  ],
  'country3': [
    'city31', 'city32'
  ],
}