jQuery - 从数组对象中获取值

5

我有一个对象数组,看起来像这样:

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

现在我可以这样访问它:

result[0].price 

但是我想要做的是循环遍历对象数组并将 id 与用户输入的 id 进行比较,返回匹配的值。所以索引应该是无关紧要的。

我尝试循环遍历对象数组,但可能犯了一些错误,没有得到任何结果。

var userinputid = 1;

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

如何解决这个问题?
4个回答

10

你应该使用currentElementInLoop.id,而不是result.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);
});


你是对的,这解决了问题。时间到了会接受。 - codenoob
是的 - 这比我的更好的解决方案。 - jacqbus
如果您的ID是唯一的,最好使用 result.find((e) => e.id == userinputid).price; 进行查找。@codenoob https://jsfiddle.net/Lg0wyt9u/1139/ - Nenad Vracar

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


1
你缺失了一个闭合括号。你需要在函数中使用元素值参数或索引参数。 尝试:
result.forEach(function (elementVal) {
    if (userinputid === elementVal.id){
        alert(elementVal.price);
    }
});

0

使用元素值参数或索引参数

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接