Убедитесь, что элемент данных d3 соответствует id?

У меня есть существующий svg с кучей полигонов. Каждый многоугольник имеет уникальный идентификатор, и с каждым идентификатором у меня есть некоторые связанные данные.

Мой вопрос таков: если я делаю естественное соединение d3:

d3.selectAll("polygon").data(array_of_data)

В любом случае, убедитесь, что элемент данных, связанный с многоугольником, является правильным?

Или мне просто нужно сохранить порядок array_of_data так же, как и порядок выбранных полигонов?

Ответы

Ответ 1

Функция D3 data() принимает необязательный второй аргумент, который предназначен для обеспечения такого соответствия между данными и узлами DOM. Попробуйте следующее:

d3.selectAll('polygon').data(array_of_data, function(d) { return d.id; });

Второй аргумент data() - это функция обратного вызова, которая при вызове с нулевой точкой возвращает ключ, связывающий каждый DOM node с соответствующей базой данных. Когда вы не предоставляете такую ​​функцию, D3 остается без опции, но для использования индекса для привязки данных к узлам DOM.