优化javascriptd3语句

优化javascriptd3语句,javascript,d3.js,Javascript,D3.js,我是d3新手,现在使用对数比例法来确定某些东西必须是什么颜色。我认为一定有一种方法可以利用d3的更多特性来优化下面的代码。我该怎么做 var logScale = d3.scale.log().domain([1, 400]).range([0, 6]); var colorIndex = Math.round(logScale(count)); var colors = ['#D6EAF8', '#A9DFBF', '#A2D9CE', '#F1948A', '#CD6155', '#A932

我是d3新手,现在使用对数比例法来确定某些东西必须是什么颜色。我认为一定有一种方法可以利用d3的更多特性来优化下面的代码。我该怎么做

var logScale = d3.scale.log().domain([1, 400]).range([0, 6]);
var colorIndex = Math.round(logScale(count));
var colors = ['#D6EAF8', '#A9DFBF', '#A2D9CE', '#F1948A', '#CD6155', '#A93226', '#7B241C'];
return colors[colorIndex];

从技术上讲,你想创造的是一个

您可以使用
d3.scale.threshold
(在您的例子中是d3 v3,或者在v4中是
d3.scaleThreshold
)。然而,您必须显式地设置阈值,最终的代码可能比您现在拥有的还要难看。让我们看看

首先,让我们检查代码的结果:

var logScale=d3.scale.log().domain([1400]).range([0,6]);
变量颜色=['#D6EAF8'、'#A9DFBF'、'#A2D9CE'、'#F1948A'、'#CD6155'、'#A93226'、'#7B241C'];
var结果=d3.范围(14001,1).映射(函数(d){
var colorIndex=数学圆整(对数标度(d));
返回颜色[颜色索引]
}).减少(功能(a,c){
如果(a中的c){
a[c]++
}否则{
a[c]=1
}
归还
}, {})
console.log(结果)

太糟糕了,你编辑了标题!Opti mazing刚刚让我开心了一天!虽然你的代码可能不是opti,但它确实非常“令人困惑:-)我的代码是如此的丑陋和笨拙,以至于我想了5次,如果我应该写这个答案还是不写的话……我将立即开始使用这个术语,用于你不关心美、性能或其他无关的东西的情况,只是优化它!