【问题标题】:JSON Array filter by inner property [closed]JSON数组过滤器按内部属性[关闭]
【发布时间】:2020-12-15 09:00:11
【问题描述】:

我有一个具有以下结构的 JSON。如何根据网络类型过滤其中的对象?

[
       {
          "101":{
             "LAT":"43.348",
             "LONG":"25.082",
             "NETWORK":"QR",
          },
          "102":{
             "LAT":"43.348",
             "LONG":"25.082",
             "NETWORK":"PR",
          },
          "104":{
             "LAT":"43.348",
             "LONG":"25.082",
             "NETWORK":"QR",
          }
       }
]

【问题讨论】:

  • 你知道这是一个只有一个元素的数组吗?你想如何过滤这个数组?是否要过滤对象?首先,您应该使用JSON.parse 解析这些数据。

标签: javascript json filter


【解决方案1】:

像这样尝试(ES6):

var data = [
       {
          "101":{
             "LAT":"43.348",
             "LONG":"25.082",
             "NETWORK":"QR",
          },
          "102":{
             "LAT":"43.348",
             "LONG":"25.082",
             "NETWORK":"PR",
          },
          "104":{
             "LAT":"43.348",
             "LONG":"25.082",
             "NETWORK":"QR",
          }
       }
];

function filterdata(findkey, findvalue) {
  var mydata = data; //any parsing here
  
  return Object.keys(mydata[0]).map(function(key){
    return { key: key, value: mydata[0][key]};
  }).filter(function(element){
     return element.value[findkey] === findvalue;
  }).reduce(function(result, element) {
     result[element.key] = element.value;
     return result;
  }, {})
};

console.log(filterdata("NETWORK", "QR"))

基本上,您将对象转换为数组,对其进行过滤,然后将结果转换回对象。

【讨论】:

    【解决方案2】:

    您可以先解析 json,然后像这样过滤:

    const filtered = Object.values(JSON.parse(data)[0]).filter(
      it => it.NETWORK === 'QR'
    )
    

    请注意,我使用的是 data[0],因为您的数组只有一个项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      • 2016-08-10
      • 2018-02-21
      • 2021-10-11
      • 2021-04-22
      • 1970-01-01
      相关资源
      最近更新 更多