这是我目前的解决方案
var snap = this.snaps.find((snap) => {
if(pos > snap.min && snap.max > pos){
return snap;
}
})
if(snap !== undefined){
this.scrollTo = snap.down ? snap.max : snap.min;
}else{
this.scrollTo = undefined
}
我想做同样的事情,但没有if else声明。我试过了:
this.scrollTo = this.snaps.find((snap) => {
if(pos > snap.min && snap.max > pos){
return snap.down ? snap.max : snap.min;;
}
})
但这不起作用。
答案 0 :(得分:5)
假设this.snaps.find
是Array.prototype.find,只有从函数返回的任何布尔值都很重要。该函数中的return snap;
与return true;
具有相同的效果。在您的情况下,返回条件的布尔值而不是使用if语句是有意义的。您可以使用不带花括号的箭头函数来返回表达式的结果而不使用return
,因此您的find
调用可以缩短为:
var snap = this.snaps.find( snap => pos > snap.min && snap.max > pos );
您可以使用逻辑&&
运算符删除其他if / else。 &&
计算其第一个操作数,如果它是假的(undefined
是),否则它计算为第二个操作数:
this.scrollTo = snap && (snap.down ? snap.max : snap.min);