我有以下循环:

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产生的布尔值。不需要将其与空字符串连接。

09-11 20:04