Javascript 条件取决于另一个条件:条件条件

Javascript 条件取决于另一个条件:条件条件,javascript,Javascript,我根据条件1实现了一个条件2,如下所示: // condition1 comes from elsewhere let condition2; if(condition1){ condition2='task.done' }else{ condition2='! task.done' } mappedTasks=tasks.map((task,idx)=>{ if(eval(condition2)){ return /* stuff */ }

我根据
条件1
实现了一个
条件2
,如下所示:

// condition1 comes from elsewhere
let condition2;
if(condition1){
    condition2='task.done'
}else{
    condition2='! task.done'
}
mappedTasks=tasks.map((task,idx)=>{
    if(eval(condition2)){
        return /* stuff */
    }else{
        return /* other stuff */
    }
});
但是,函数
eval
无法执行此任务,我收到如下错误:

ReferenceError:评估时未定义任务

我想知道是否有人知道实现这一条件的最佳方式是什么


现在,该代码适用于:

let condition2;
if(condition1){
    condition2=task=>task.done;
}else{
    condition2=task=>!task.done;
}
mappedTasks=tasks.map((task,idx)=>{
    if(condition2(task)){
        return /* stuff */
    }else{
        return /* other stuff */
    }
});

如果可以避免,不要使用
eval

例如,在这里,您可以将第二个条件定义为一个函数(有其他方法可以满足相同的结果):


@brso05,因为OP希望评估
任务。完成
!task.done
在该回调函数中
task
.map()
回调函数的一个参数。@Pointy没错。您是对的,但请注意,OP可以直接将
condition2
作为回调函数传递给
.map()
。(可能;取决于上下文。)@Pointy我更想给出一个大致的方向(实际上还有其他方法,我给出的方法可能不是最好的)。谢谢你把重点(y)说出来:D
if (condition1){
    condition2 = function (task) { return task.done; }
} else {
    condition2 = function (task) { return !task.done; }
}
mappedTasks = tasks.map((task,idx)=>{
    if (condition2(task)) {
        return /* stuff */
    } else {
        return /* other stuff */
    }
});