Из того, что я понимаю, правильный способ обновить данные d3 - это передать его в выделение .data()
.
Данные, которые я получаю, не упорядочены или не совместимы. Поэтому мне очень важно использовать логику обновления/добавления/удаления. Таким образом, в d3-выражениях .data()
с .enter()
и .exit()
(справа?).
Итак, я хотел бы использовать словарь javascript вместо массива, где ключ - это мой уникальный идентификатор. Но я не могу этого сделать. Поддельный пример:
data_one[0] = 'Dogs';
data_one[1] = 'Cats';
d3.selectAll('circle').data(data_one).enter().attr(...)
Во второй раз, когда я запускаю это, мои данные могут быть одинаковыми, но в другом порядке. Я хочу представить его с теми же атрибутами, что и раньше. Я не хочу дублировать свой код, но если я просто делаю .data(data_two), то неправильные круги обновляются с новыми данными.
Как это обойти?