数据通过 _.each 函数后出现意外结果
Unexpected result after data passes though _.each function
data.entries 中的每个对象都可以分配五个值之一作为其状态值:
/*
Completed, Cancelled
Not Started, In Progress, Deffered
*/
通过以下代码块后,每个条目的状态 returns 为 open,此时它们应该是 open 的混合和关闭,取决于进入区块时的状态。
_.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;
});
谁能告诉我我做错了什么以及为什么每个状态都返回 打开?
这一行
if(i.status === 'Completed' || 'Cancelled'){
应该是
if(i.status === 'Completed' || i.status === 'Cancelled'){
与其他 if
相同 - 你不能像那样做多个条件。大多数语言都无法编译,但 javascript 认为这是
if(i.status === 'Completed' || truthy_statement)
它总是评估 true
。
看来你没有正确比较。尝试:
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'){
data.entries 中的每个对象都可以分配五个值之一作为其状态值:
/*
Completed, Cancelled
Not Started, In Progress, Deffered
*/
通过以下代码块后,每个条目的状态 returns 为 open,此时它们应该是 open 的混合和关闭,取决于进入区块时的状态。
_.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;
});
谁能告诉我我做错了什么以及为什么每个状态都返回 打开?
这一行
if(i.status === 'Completed' || 'Cancelled'){
应该是
if(i.status === 'Completed' || i.status === 'Cancelled'){
与其他 if
相同 - 你不能像那样做多个条件。大多数语言都无法编译,但 javascript 认为这是
if(i.status === 'Completed' || truthy_statement)
它总是评估 true
。
看来你没有正确比较。尝试:
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'){