Sobes.tech
Назад к задачам
Junior — Senior
24

Обновление свойства объекта в массиве произвольной вложенности

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Дан массив, содержащий объекты, которые могут иметь вложенные массивы с аналогичными объектами. Глубина вложения не ограничена. Каждый объект обладает полями name и label, которые могут встречаться на любой вложенной позиции. Необходимо написать функцию updateValue, которая будет искать объект с указанными значениями name и label и менять в нём значение указанного свойства.

const data = [
  {
    name: 'John',
    label: 'Developer',
    children: [
      {
        name: 'Jane',
        label: 'Designer',
        children: [
          {
            name: 'Jim',
            label: 'Designer',
            children: []
          }
        ]
      },
      {
        name: 'Jane',
        label: 'Designer',
        children: []
      }
    ]
  },
  {
    name: 'Alice',
    label: 'Manager',
    children: []
  }
];

function updateValue(data, name, label, key, value) {
  // ...
}

Функция должна рекурсивно обходить структуру, находить объект, у которого name и label совпадают с переданными аргументами, и присваивать полю key новое значение value. Если такой объект отсутствует, массив остаётся без изменений.