2016-06-27 16 views
1

i wie dieses ein Javascript-Objekt haben:Javascript Objekt: ein Schlüssel/Wert finden, wenn in Bereich

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

i erhalten einen Wert von einem Inputfield z.B. "2300" und jetzt brauche ich den Wert für dieses "2300" vom Objekt. Da 2300 im Bereich der PLZ-Taste "2000-2500" liegt sollte der Wert "40" sein.

Ich habe keine Ahnung, wie ich den richtigen Wert finden könnte, wenn ich etwas in Schlüssel "Bereiche" nachschlagen.

danke für jeden Rat, Hilfe dabei.

+0

Was würden Sie zurück, wenn sie würden Eingang, ich weiß nicht, 1500? – Sumurai8

Antwort

0

Wraped als Funktion:

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]; 
    } 
} 

Call:

console.log(getValue(1000)); // 12 
console.log(getValue(2300)); // 40 
console.log(getValue(3000)); // 30 
console.log(getValue(5000)); // undefined 
+0

'foreach'? sollte "für" sein. –

+0

Sicher. Ich habe es geändert. Panzer! – eisbehr

3

Sie können die Schlüssel iterieren, teilen Sie sie, wenn möglich, und eine Prüfung durchführen. Wenn Sie sich in Reichweite befinden, geben Sie den Artikel zurück und verlassen Sie die Schleife.

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'));

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; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>

+0

Wow, das war schnell und voller Code !! vielen Dank! war nicht eine vollständige Lösung zu erwarten :). – Sebastian