Javascript查找表
我有一个保存数据的对象Javascript查找表,javascript,arrays,object,if-statement,lookup,Javascript,Arrays,Object,If Statement,Lookup,我有一个保存数据的对象 DataSoccer: [{ 0: '0.00', 1: '10.4', 2:'100.5', 3:'15.3', 4:'11.2', 5:'15.9'}] 当键值是完整的时,这很简单 DataSoccer[0][1]//返回10.4 问题是现在的索引并不完整 DataSoccer: [{ 0: '0.00', 1.30: '10.4', 2.40:'100.5', 3.40:'15.3', 4.5:'11.2', 5:'15.9'}] 所以我得到一个用户输入,
DataSoccer: [{ 0: '0.00', 1: '10.4', 2:'100.5', 3:'15.3', 4:'11.2', 5:'15.9'}]
当键值是完整的时,这很简单
DataSoccer[0][1]//返回10.4
问题是现在的索引并不完整
DataSoccer: [{ 0: '0.00', 1.30: '10.4', 2.40:'100.5', 3.40:'15.3', 4.5:'11.2', 5:'15.9'}]
所以我得到一个用户输入,比如说2.30,它应该返回10.4(第二个索引)
目前我有一个if语句
if (value == 0 {
return 0.00
}
else if (value <= 1.30) {
return 10.4
}
else if (value > 1.30 value < 2.40) {
return 100.5
}
if(值==0{
返回0.00
}
否则如果(值1.30值<2.40){
返回100.5
}
您可以想象,使用if-else的查找功能会变得相当麻烦,并且想知道是否有更好的方法?通过一次迭代获得值
函数getValue(p){
返回对象[object.keys(object).reduce(函数(r,k){
返回k p?r:k;
},未定义)];
}
var object={0:'0.00',1.30:'10.4',2.40:'100.5',3.40:'15.3',4.5:'11.2',5:'15.9'};
document.write(“”+JSON.stringify(getValue(2.3),0,4)+’;
试试这个
VarDataSoccer=[{0:'0.00',1.30:'10.4',2.40:'100.5',3.40:'15.3',4.5:'11.2',5:'15.9'}];
//对DataSoccer[0]中的所有键进行排序
var sortedKeys=Object.keys(DataSoccer[0]).sort(函数(a,b){return parseFloat(a)-parseFloat(b)});
//获取小于2.3(即1.3)的值
var smallerKey=sortedKeys.filter(函数(val){return val<2.3}).pop();
//获取下一个值,即1.3之后的2.4
var actualKey=sortedkey[sortedkey.indexOf(smallerKey)+1];
//警告值为2.4
警报(“值为”+DataSoccer[0][actualKey]);//访问值ar 2.4您的数组只有一个元素(一个具有所有这些属性和值的对象)。为什么不使用数组来保存它们呢?好的,数组可以,但不能解决外观问题?转换为字符串可能会删除零。
DataSoccer[0][“1.3”]
。input 2.3-->10.4是一个输入错误吗?或者你真的想要“最近的”邻居吗?为什么2.3应该返回10.4而不是100.5?用户想要访问2.30(它不是数组的一部分)@亲爱的downvoter请告诉我我错过了什么?