Как превратить объекты со ссылками в JSON?
Не понимаю, зачем задают такие вопросы.
Задача с learn.javascript
Там же можно посмотреть решение, если сам не можешь додуматься. Но автор почему-то хочет задать вопрос на тостере. Автор, зачем?
Дело в том, что в JSON не может быть циклических ссылок по определению. Там даже нет переменных.
Лучше всего вам перейти на немного другой формат данных. А именно, хранить не ссылки на объекты, а их ключи в виде строк. Такие строки-ссылки спокойно сериализуются.leader.soldier = "soldier";
soldier.leader = "leader";
Автоматически лучше не конвертировать, а именно взять такой формат за основу. Но если очень хочется, то как-то так:for (let key in obj) {
  if (window[key]) obj[key] = key; //любой ваш критерий
}
В будущем для проверки, правда, понадобится чуть усложнённый код:var test_leader = soldier.leader && window[soldier.leader];
//Конечно, вместо window у вас будет свой объект-обертка
Чтобы избавится от этого вам нужно будет всего лишь "чинить" объект после JSON.parse