我有以下循环:
while(i <= num_loops)
{
if(cat_ids.indexOf(parseInt(i, 10)) != -1)
{
catsPie.addData({
value: cat_names[cat_ids.indexOf(parseInt(i, 10))],
color: "" + (i==0) ? '#150faf' : randomColor({luminosity: 'dark'}),
highlight: "#B48EAD",
label: "" + cat_names_string[cat_ids.indexOf(parseInt(i, 10))]
});
}
i++;
}
这是一个向Chart.js中的饼图添加新数据的动态解决方案。一切都按预期进行,但只有一件事。在第7行(颜色)中,我仅在i == 0时才希望将颜色设置为#150faf(蓝色)。在其他情况下,它应等于randomColor的返回值。但是无论如何它总是返回#150faf。
如果我删除该三元部分,只需使其像:
color: "" + randomColor({luminosity: 'dark'}),
一切正常,但这不是我想要的。第一个数据必须为#150faf。
我如何解决它?
最佳答案
三元运算符"" + (i==0)
之前的表达式的结果为字符串。 JavaScript中的非空字符串为true
-即使字符串"false"
的布尔值也为true
!您要尝试做的是评估i == 0
产生的布尔值。不需要将其与空字符串连接。