求大神教我处理一下
发布于 6 年前 作者 xiaole1 1280 次浏览 来自 问答

现在有一个数组,里面有阶梯的数字,类似下图 image.png 然后用户输入一个数字,如何拿到这个数组里面,距离这个数字最近的数字! 谢谢!!!

3 回复
// 需要查找的数组
const originalArr=[ 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200 ]
// 需要比对的数
const num=550
// 找到距离最近的数字
// 如果有距离相等的两数,取小的
Array.from(originalArr).sort((a,b)=>Math.abs(a-num)-Math.abs(b-num))[0] // 输出500
// 如果有距离相等的两数,取大的
Array.from(originalArr).sort((a,b)=>Math.abs(b-num)-Math.abs(a-num)).pop() // 输出600

@XYShaoKang 厉害了!!真的感谢, !!

Array.from(originalArr).sort((a, b) => a <= num && b <= num ? b - a : a - b)[0] 改了要求,成了只要没到这个数,就输出这个数之前的数,比如不论是401 还是499还是400都输出400

回到顶部