![](/img/trans.png)
[英]How do I compare an object property values to the values of an array, and then replace the object values with the array values?
[英]How to compare a property to the values from an array of object?
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值的My輸出停滯不動。 外循環根據我擁有的數據數量運行。 如何比較這些值?
電流輸出
預期產量
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
根據您的示例,假設您使用的是d3,並且您想根據矩形的顏色設置矩形的顏色。 當數據與任何bin都不匹配時,我還假定"#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";
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.