我有一个像这样的Javascript对象:
pItems = {
single : {
...
plz: {
"1000": 12,
"2000-2500" : 40
"3000": 30
}
...
}
}
我从输入字段中获取值,例如“2300”,现在我需要来自物体的这个“2300”的值。因为2300在plz-key“2000-2500”的范围内,我应该回来的值是“40”。
如果我在关键的“范围”中查找某些内容,我不知道如何找到合适的值。
感谢您的任何建议,帮助。
答案 0 :(得分:3)
如果可能,您可以迭代密钥,拆分密钥并执行检查。如果在范围内,则返回该项并离开循环。
function getItem(value) {
var item;
Object.keys(object.plz).some(function (k) {
var part = k.split('-');
if (+value >= part[0] && +value <= (part[1] || part[0])) {
item = object.plz[k];
return true;
}
});
return item;
}
var object = { plz: { "1000": 12, "2000-2500": 40, "3000": 30 } };
console.log(getItem('1000'));
console.log(getItem('2300'));
答案 1 :(得分:0)
Wraped as function:
function getValue(search) {
for( var range in pItems.plz ) {
var split = range.split("-");
if( search >= parseInt(split[0]) && search <= parseInt(split[1] || split[0]) )
return pItems.plz[range];
}
}
呼叫:
console.log(getValue(1000)); // 12
console.log(getValue(2300)); // 40
console.log(getValue(3000)); // 30
console.log(getValue(5000)); // undefined
答案 2 :(得分:0)
var pItems = {
single : {
plz: {
"1000": 12,
"2000-2500" : 40,
"3000": 30
}
}
};
var val =2300 ;
$.each(pItems.single.plz, function(k,v) {
var min = parseInt(k.split('-')[0]);
var max = parseInt(k.split('-')[1]);
if(isNaN(max) ){
if(min == val){
console.log(v);
return;
}
}else if(val>=min || val <= max){
console.log(v);
return;
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
&#13;