Как сравнить свойство со значениями из массива объекта? - PullRequest
0 голосов
/ 28 сентября 2018

d : {"children":[{"name":"China","children":[{"name":"China","value":400,"percentage":"33.33"}],"index":0},{"name":"England","children":[{"name":"England","value":300,"percentage":"33.33"}],"index":1},{"name":"Malaysia","children":[{"name":"Malaysia","value":500,"percentage":"25.00"}],"index":2},{"name":"South Korea","children":[{"name":"South Korea","value":600,"percentage":"50.00"}],"index":3}]}

Массив объекта

cfg.thresholdSetting.thresholds = [{"dType":"threshold","from":0,"to":30,"color":"rgb(217, 20 ,39)"},{"dType":"threshold","from":30,"to":70,"color":"rgb(242, 145, 10)"},{"dType":"threshold","from":70,"to":120,"color":"rgb(33, 145, 49)"}]

Тогда у меня есть свойство:

rect.style("fill", function (d, i) {

    for (var k = 0; k < fromValues.length; k++) {
      console.log("percentage : " + d.percentage)
      console.log("from value : " + fromValues[k])
      console.log("to value : " + toValues[k])
         if (d.percentage >= fromValues[k] && d.percentage <= toValues[k]) {
           return cfg.thresholdSetting.thresholds[k].color;
         }
         else {
           return "#808080";
         } 
    }
  })

Из кода мой вывод для значений from и to является неизменным и не перемещается.Внешний цикл выполняется в соответствии с количеством данных, которые у меня есть.Как мне сравнить эти значения?

Токовый выход

enter image description here

Ожидаемый выход

d.percentage = 33.33
from value   = 0
to value     = 30

d.percentage = 33.33
from value   = 30
to value     = 70

d.percentage = 33.33
from value   = 70
to value     = 120 

d.percentage = 50.00
from value   = 0
to value     = 30

d.percentage = 50.00
from value   = 30
to value     = 70

d.percentage = 50.00
from value   = 70
to value     = 120

1 Ответ

0 голосов
/ 28 сентября 2018

Исходя из вашего примера, я предполагаю, что вы используете d3 и хотите установить цвет прямоугольника в соответствии с тем, какой корзиной они являются.Я также предполагаю, что "#808080" - это цвет по умолчанию, когда данные не соответствуют ни одной ячейке.В этом случае:

rect.style("fill", function(d) {
    var color = cfg.thresholdSetting.thresholds.filter(function(t, i) {
        return d.percentage >= t.from && d.percentage < t.to;
    });
    return color.length > 0 ? color[0].color : "#808080";
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...