数据通过 _.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'){