Javascript 查找对象中最接近的整数

Javascript 查找对象中最接近的整数,javascript,loops,object,Javascript,Loops,Object,正如标题所说,我试图在一个对象中找到最接近的整数,我的数据存储方式如下,我不能改变它的存储方式 {"response": {"success":1,"current_time":1490650140,"items": {"AK-47 | Aquamarine Revenge (Battle-Scarred)":{"last_updated":1490648718,"quantity":98,"value":1120}, "AK-47 | Aquamarin

正如标题所说,我试图在一个对象中找到最接近的整数,我的数据存储方式如下,我不能改变它的存储方式

{"response":
    {"success":1,"current_time":1490650140,"items":
        {"AK-47 | Aquamarine Revenge (Battle-Scarred)":{"last_updated":1490648718,"quantity":98,"value":1120},
        "AK-47 | Aquamarine Revenge (Factory New)":{"last_updated":1490648718,"quantity":47,"value":3229},
        "AK-47 | Aquamarine Revenge (Field-Tested)":{"last_updated":1490648718,"quantity":159,"value":1623}
        }
    }
}
我想找到最接近给定数字(x)的项目。如果物品的价值相等,则只需选择其中一项即可。我知道我需要一个循环,但我不知道从哪里开始


我试图在obj中找到与值最接近的整数x。

您需要一个变量来存储最接近的匹配

您可以使用JsonObject来处理json的解析

将第一个条目加载到变量中。 循环浏览其余条目,并对照以前存储的条目检查每个条目。如果它更接近您的搜索数字,请用此数字替换存储的数字


基本上,这与在列表中查找最高或最低值的问题相同,只是您使用不同的公式来决定何时用新的值替换以前存储的值。

您可以在对象上使用
for..in
,或使用数组迭代方法
for
.forEach
,通过使用
Object.keys(data.response.items)
(这将为您提供一个对象键数组)

const data={“response”:
{“成功”:1,“当前时间”:1490650140,“项目”:
{“AK-47 |海蓝宝石复仇(战争伤痕)”:{“上次更新”:1490648718,“数量”:98,“价值”:1120},
“AK-47 |海蓝宝石复仇(新工厂)”:{“上次更新”:1490648718,“数量”:47,“价值”:3229},
“AK-47 |海蓝宝石复仇(现场测试)”:{“上次更新”:1490648718,“数量”:159,“价值”:1623}
}
}
};
常数目标=1344;
功能findClosestForIn(项目、目标){
设closestVal=无穷大;
设closestObj=null;
用于(让输入项目){
设obj=项目[键];
设curDiff=Math.abs(obj.value-target);
if(curDiff{
const obj=data.response.items[键];
const curDiff=数学abs(对象值-目标);
if(curDifflog('closest using Object.keys:',findClosestObjectKeys(data.response.items,target))因此引用数组,执行for循环。存储该值,如果值较低,则覆盖并存储下一个值。这就是我的想法,但是否有更有效的方法来执行此操作..?此集合似乎是。哪些整数是相关的?例如,
1
success
值是否有效?上次更新的
值如何?或者
AK-47
中的
47
?为什么不自己编写代码呢?堆栈溢出不是一个代码编写服务。好吧,我明白了,但我如何检查一个是否比另一个整数更接近。if(Math.abs(searchValue-thisJsonObject.getInt(“last_update”)