我不知道如何标题我的问题,但让我解释一下我的情景:
我有一个包含6个系列数据的图表,我想只显示前3个不是0
的图表。所以我有类似的东西:
if(a == 0) showA = false;
if(b == 0) showB = false;
if(c == 0) showC = false;
if(d == 0) showD = false;
if(e == 0) showE = false;
if(f == 0) showF = false;
以上是检查哪个系列有数据并隐藏那些空的。但是,如果它们都有数据,则图表中将显示所有6个数据。
我想要的是仅选择showX
的前{3} true
并标记其他false
,以便它们不会显示在图表上。
我在想我可以将booleans
推送到一个数组,只选择前{3}个true
,但由于每个系列都有自己的visibility variable
,我该如何标记其他人为false
?
感谢任何帮助
答案 0 :(得分:1)
在if子句中使用计数器。计算false
的每个实例,并在达到一定数量的图表(3)时将其设置为var max = 3;
var counter = 0;
showA = a != 0 && counter++ < max;
showB = b != 0 && counter++ < max;
showC = c != 0 && counter++ < max;
showD = d != 0 && counter++ < max;
showE = e != 0 && counter++ < max;
showF = f != 0 && counter++ < max;
。
代码示例:
var values = [a, b, c, d, e, f];
var shouldBeVisible = new Array(values.length);
var counter = 0;
var max = 3;
for (var i = 0; i < values.length; i++) {
shouldBeVisible[i] = values[i] != 0 && counter++ < max;
}
计数器仅在值!= 0时递增的原因是因为JavaScript具有short-circuit evaluation。
使用数组可以使其更具可扩展性。
app.post('/articles', function newArticle(req, res, next) {
var article = new Article(req.body);
article.set('is_owner', req);
article.save(function onSaved(err, savedArticle) {
if (err) {
return next(err);
}
res.json(savedArticle);
});
});