data.entries中的每个对象可以分配五个值中的一个作为其状态值:
/*
Completed, Cancelled
Not Started, In Progress, Deffered
*/
在通过以下代码块之后,每个条目的状态将返回为 open ,当它们应该是 open 和 closed 的混合 em>,取决于进入区块时的状态。
_.each(data.entries, function(element){
var entryStatus = _.chain(element)
.countBy(function (i) {
if(i.status === 'Completed' || 'Cancelled'){
i.status = 'closed';
}
if(i.status === 'Not Started' || 'In Progress' || 'Deffered'){
i.status = 'open';
}
return i.status;
})
.value();
element.entryStatus = entryStatus;
});
有谁可以告诉我这里我做错了什么以及为什么每个状态都以打开的形式返回?
答案 0 :(得分:2)
这一行
if(i.status === 'Completed' || 'Cancelled'){
应该是
if(i.status === 'Completed' || i.status === 'Cancelled'){
与其他if
相同 - 你无法做到这样的多个条件。大多数语言都无法编译,但javascript将其视为
if(i.status === 'Completed' || truthy_statement)
始终评估true
。
答案 1 :(得分:0)
您似乎无法正确比较。尝试:
if(i.status === 'Completed' || i.status === 'Cancelled'){
i.status = 'closed';
}
if(i.status === 'Not Started' || i.status === 'In Progress' || i.status === 'Deffered'){
i.status = 'open';
}
这总是会导致真实:
if('In Progress' || 'Deffered'){