如果找到则返回Javascript,否则设置为undefined

时间:2018-01-03 16:59:06

标签: javascript

这是我目前的解决方案

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

但这不起作用。

1 个答案:

答案 0 :(得分:5)

假设this.snaps.findArray.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);