Javascript对象:在范围内查找键/值

时间:2016-06-27 14:42:29

标签: javascript jquery object key range

我有一个像这样的Javascript对象:

pItems = {
 single : {
  ...
  plz: {
   "1000": 12,
   "2000-2500" : 40
   "3000": 30  
  }
  ...
 }
}

我从输入字段中获取值,例如“2300”,现在我需要来自物体的这个“2300”的值。因为2300在plz-key“2000-2500”的范围内,我应该回来的值是“40”。

如果我在关键的“范围”中查找某些内容,我不知道如何找到合适的值。

感谢您的任何建议,帮助。

3 个答案:

答案 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)

&#13;
&#13;
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;
&#13;
&#13;