2016-08-17 5 views
2

ich ein Array von Objekt, dasjquery - get Wert von Array-Objekt

var result = [{"id":"1","price":"20.46"},{"id":"2","price":"40.00"}] 

wie diese aussehen jetzt ich es von

result[0].price 

zugreifen können, aber was ich versuche Schleife zu tun ist, durch das Array von Objekt, und vergleichen Sie die ID mit einem Benutzer eingegeben id und geben Sie den passenden Wert zurück. Also sollte der Index irrelevant sein

Ich habe versucht, das Array von Objekt durchzulaufen, aber ich habe wahrscheinlich einige Grammatikfehler gemacht und nichts zurückbekommen.

var userinputid = 1; 

result.forEach(function(){ 
    if(userinputid == result.id){ 
    alert(result.price); 
    }); 

So lösen Sie das Problem.

Antwort

4

Statt result.id sollten Sie verwenden currentElementInLoop.id

var result = [{"id":"1","price":"20.46"},{"id":"2","price":"40.00"}] 
 
var userinputid = 1; 
 

 
result.forEach(function(e) { 
 
    if (userinputid == e.id) alert(e.price); 
 
});

+0

Sie haben Recht, das hat es gelöst. wird akzeptieren, wenn die Zeit abläuft – codenoob

+0

yeah - das ist eine bessere Lösung als meine. – jacqbus

+0

@codenoob Wenn Ihre IDs eindeutig sind, verwenden Sie besser find 'result.find ((e) => e.id == userinputid) .price;' https://jsfiddle.net/Lg0wyt9u/1139/ –

1

Sie verpassen eine Endklammer. Und Sie müssen die Funktion den Elementwertparameter oder den Indexparameter verwenden. Versuchen

result.forEach(function (elementVal) { 
    if (userinputid === elementVal.id){ 
     alert(elementVal.price); 
    } 
}); 
1

Sie vergaßen Index:

var result = [{"id":"1","price":"20.46"},{"id":"2","price":"40.00"}] 
 
var userinputid = 1; 
 

 
result.forEach(function(e, index){ 
 
    if(userinputid == result[index].id){ 
 
    alert(result[index].price); 
 
    }; 
 
});