D3.js: динамически генерировать источник и цель на основе идентичных значений JSON

Добрый день, я новичок в d3 / javascript, и это может быть простой / повторный вопрос, но я просто не могу заставить этот раздел моего кода работать ..

У меня есть этот массив JSON здесь:

var myArray = [{"id": "red", "value":"1"},
 {"id": "orange", "value":"2"},
 {"id": "yellow", "value":"3"},
 {"id": "green", "value":"1"},
 {"id": "blue", "value":"1"},
 {"id": "violet", "value":"3"}];

Я понимаю, что для создания ссылок между узлами в D3 мне нужен массив с[{"source": "___", "target": "___"} состав.

Может ли кто-нибудь помочь мне связать вышеупомянутые элементы массива на основе их значений (то есть граф узлов свяжет все узлы с одинаковыми значениями вместе)?

Сейчас я думаю, что одним из решений является повторение вручную и создание ссылок с использованием цикла for..if .., но это будет повторяться много раз, если у меня много узлов (> 1000?), И по пути будут создаваться дубликаты.

Вот изображение желаемого выхода: