【问题标题】:Get data from JSON object using value within使用内的值从 JSON 对象获取数据
【发布时间】:2016-09-21 09:26:05
【问题描述】:

我的 JSON 如下:

{
    "sales": [{
        "manager": "alberic",
        "surgeon": "Dr Barry Biggins",
        "amount": "300",
        "country": "USA",
        "percent-seller": "30",
        "antiquity": "June 2017",
        "date": "6"
    }, {
        "manager": "support",
        "surgeon": "Dr Barry Biggins",
        "amount": "300",
        "country": "UK",
        "percent-seller": "20",
        "antiquity": "June 2017",
        "date": "2"
    }, {
        ...
    }]
}

我想从sales 检索对象,其中manager = "support"date = "2"。我如何在 jQuery 中解决这个问题?

谢谢!

【问题讨论】:

    标签: javascript jquery json object


    【解决方案1】:

    您只需使用filter() 方法并在过滤器方法中使用您的条件,如果您的条件为真,函数将返回元素,否则忽略元素。

    data=    {"sales": [{
              "manager": "alberic",
              "surgeon": "Dr Barry Biggins",
              "amount": "300",
              "country": "USA",
              "percent-seller": "30",
              "antiquity": "June 2017",
              "date": "6"
            }, {
              "manager": "support",
              "surgeon": "Dr Barry Biggins",
              "amount": "300",
              "country": "UK",
              "percent-seller": "20",
              "antiquity": "June 2017",
              "date": "2"
            },
           ]
          };
    
    
    var matchedElements = data.sales.filter(function(element) {
       return (element.manager == 'support' && element.date == '2');
    });
                       
    console.log(matchedElements);
                        
    //if you want to access  surgeon of first element of matchedElements
                        
    console.log(matchedElements[0].surgeon);
    
              
    //if you want to access  surgeon of all elements in matchedElements
    for(i in matchedElements)           
    {
    console.log(matchedElements[i].surgeon);
    }

    【讨论】:

    • 谢谢,但我如何在使用 matchElements 后访问外科医生?
    • 我已经修改了从matchedElements访问外科医生的代码:)
    【解决方案2】:

    filtersales 数组。

    如果您想支持旧版浏览器,请务必添加上述链接中的 polyfill。

    var matchingSales = jsonData.sales.filter(function(sale) {
       return sale.manager == 'support' && sale.date == '2';
    });
    

    【讨论】:

      【解决方案3】:

      var data = {
        "sales": [{
          "manager": "alberic",
          "surgeon": "Dr Barry Biggins",
          "amount": "300",
          "country": "USA",
          "percent-seller": "30",
          "antiquity": "June 2017",
          "date": "6"
        }, {
          "manager": "support",
          "surgeon": "Dr Barry Biggins",
          "amount": "300",
          "country": "UK",
          "percent-seller": "20",
          "antiquity": "June 2017",
          "date": "2"
        }]
      };
      
      
      $.each(data.sales, function(i, v) {
      
        if (v.manager == 'support' && v.date == '2') {
          console.log(v.manager)
          console.log(v.surgeon)
          console.log(v.amount)
        }
      
      })
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

      使用.each()遍历它们

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多