2016-08-17 3 views
2

У меня есть массив объектов, которые выглядят как этотJQuery - получить значение из объекта массива

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

прямо сейчас я могу получить доступ к этому

result[0].price 

но то, что я пытаюсь сделать, это цикл через массив объекта и сравнить идентификатор с введенным пользователем идентификатором и вернуть соответствующее значение. Поэтому индекс должен быть неактуальным.

Я попытался пройти через массив объектов, но я, вероятно, совершил ошибку в грамматике и ничего не получил.

var userinputid = 1; 

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

Как это решить.

ответ

4

Вместо того result.id вы должны использовать 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

Вы правы, это решило это. будет приниматься, когда время истекает – codenoob

+0

да - это лучшее решение, чем мое. – jacqbus

+0

@codenoob Если ваши идентификаторы уникальны, лучше использовать find 'result.find ((e) => e.id == userinputid) .price;' https://jsfiddle.net/Lg0wyt9u/1139/ –

1

Вам не хватает концевой скобы. И вам нужно, чтобы функция использовала параметр значения элемента или индексный параметр. Попробуйте

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

Вы забыли о индексе:

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