Но лучше посмотреть структуры данных, их много разных, и если найдётся подходящая, задачу можно декомпозировать на приведение к нужной структуре и применение операции ко всей структуре.
Судя по описанной задаче, (данные в коллекциях произвольной вложенности), тут подойдут розовые деревья. Обход дерева пишется тривиально через рекурсию (что не слишком подходит JS) или итерации (BFS/DFS). В принципе, можно рассматривать примитивные JS-объекты как розовые деревья, но структура в них недостаточно отделена от данных.