[随手记录]使一个值经过调整后向一个基础值“靠近”

使一个值经过调整后向一个基础值靠近

主要针对两种应用情况:
情况1——例如:向1靠近,-7加上调整值10后应当得到结果1。(由于-7+10越过了1,则直接取1。)
情况2——例如:向0靠近,–3加上4后,取1。(由于1到0比-3到0的绝对值要更小)

代码

情况1:

function moveToBase_1(base,origin,adjust){
    let result = origin+adjust;
    if(origin<result?origin:result<=base && base<=origin<result?result:origin) return base;
    else return result;
}

情况2:

function moveToBase_2(base,origin,adjust){
    let result = origin+adjust;
    return Math.abs(result-base)<Math.abs(origin-base)?result:origin;
}

综合一下就是:

function moveToBase(base,origin,adjust){
    let result = origin+adjust;
    if(Math.min(origin,result)<=base && base<=Math.max(origin,result)) return base;
    else return Math.abs(result-base)<Math.abs(origin-base)?result:origin;
}

猜你喜欢

转载自blog.csdn.net/Shenpibaipao/article/details/81570707
今日推荐