Добавление новой покупки в калькуляторе продуктов

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

javascriptadd.addEventListener('click', function() {
  let tr = document.createElement('tr');
  
  let td;
  
  td = document.createElement('td');
  td.textContent = name.value;
  td.classList.add('name');
  tr.appendChild(td);
  
  td = document.createElement('td');
  td.textContent = price.value;
  td.classList.add('price');
  tr.appendChild(td);
  
  td = document.createElement('td');
  td.textContent = amount.value;
  td.classList.add('amount');
  tr.appendChild(td);
  
  td = document.createElement('td');
  td.textContent = price.value * amount.value;
  td.classList.add('cost');
  tr.appendChild(td);
  
  td = document.createElement('td');
  td.textContent = 'удалить';
  td.classList.add('remove');
  tr.appendChild(td);
  
  table.appendChild(tr);
});

Приведенное мною решение, однако, имеет явные проблемы с дублированием кода: фактически для каждой ячейки мы пишем один и тот же код.

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

javascriptfunction createCell(tr, value, name) {
  
}

Имея такую функцию мы бы смогли переписать приведенный выше код следующим образом:

javascriptadd.addEventListener('click', function() {
  let tr = document.createElement('tr');
  
  createCell(tr, name.value, 'name');
  createCell(tr, price.value, 'price');
  createCell(tr, amount.value, 'amount');
  createCell(tr, price.value * amount.value, 'cost');
  createCell(tr, 'удалить', 'remove');
  
  table.appendChild(tr);
});
Задание 1

Реализуйте описанную мною функцию createCell.

Задание 2

Скопируйте мой код для добавления новой покупки. Потестируйте добавление новой покупки в таблицу.

Задание 3

Модифицируйте функцию createCell так, чтобы она возвращала через return созданную ячейку таблицы.