Javascript 使用lodash获取最接近的道具下一个值

Javascript 使用lodash获取最接近的道具下一个值,javascript,arrays,lodash,Javascript,Arrays,Lodash,我有一个对象数组,每个对象都有不相关的ID 我想知道,给定一个整数,是否有可能找到下一个最近的id值对象 范例 const array = [{id: 4}, {id: 10}, {id: 15}] 给定任何值x,如果10(array.find({id})=>x如果每次都需要较高的值,可以检查此项 找到id高于x的项。另外,我认为您需要首先根据id对数组进行排序,以避免未排序的数组出现任何问题 常数x=5; 常量数组=[{id:4},{id:10},{id:15}]; const max=a

我有一个对象数组,每个对象都有不相关的ID

我想知道,给定一个整数,是否有可能找到下一个最近的id值对象

范例

const array = [{id: 4}, {id: 10}, {id: 15}]

给定任何值
x
,如果
10id
值排序,则可以使用
array.find()
查找大于或等于
x
的第一个
id

const数组=[{id:4},{id:10},{id:15}]

const findClosestId=(x)=>(array.find({id})=>x如果每次都需要较高的值,可以检查此项

找到
id
高于
x
的项。另外,我认为您需要首先根据
id
对数组进行排序,以避免未排序的数组出现任何问题

常数x=5;
常量数组=[{id:4},{id:10},{id:15}];
const max=array.sort((a,b)=>a.id-b.id)
.find(item=>item.id>x);

console.log(max);
如果您的数组未排序,并且您不想使用
.sort
方法(例如:可能是因为您不想更改数组),则可以使用
.reduce
找到最佳结果:

const数组=[{id:4},{id:10},{id:20},{id:15}]
函数findClosest(x){
返回数组。减少((最佳,当前)=>{
返回(current.id>=x&(!best | | current.idconsole.log(findClosest(16))
这读起来像是一个“给我代码”的问题。您能告诉我们您尝试了什么吗?可能必须循环一次所有值,检查每个值是否有一个更接近的值,或者先对列表排序