Условный цвет стран, выбирающих слово в имени Топойсон - PullRequest
0 голосов
/ 26 апреля 2020

Я сделал карты в D3, и я предварительно назначил цвета для идентификаторов и свойств. В этом случае я пытаюсь раскрасить условно в зависимости от наличия в названии конкретного слова c. Например: синий цвет - все страны со словом «Юнайтед» в названиях, все остальные страны - розовый. В этом случае он будет окрашен в синий цвет «США», «Великобритания» и «Объединенные Арабские Эмираты». Я попытался indexOf и некоторые и str.includes, но это приводит к: Uncaught TypeError: Невозможно прочитать свойство 'includes' undefined.

Вот код: https://jsfiddle.net/databayou/retk2pu6/7/

  svg.selectAll(".country")
  .data(topojson.feature(nations, nations.objects.countries).features)
  .enter().append("path")
  .attr("class", function(d) { return "country " + d.name; })
  .attr("fill",function(d){ 
          var str = d.name;
          if (str.includes("United")) { return "blue"}
                            else {return "pink";
                           }
                       })
  .attr("d", path);

1 Ответ

0 голосов
/ 26 апреля 2020

Измените var str = d.name; на var str = d.properties.name;

Если вы console.log d, вы увидите, что name находится внутри properties.

...