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 */
}
});