反应原生如何过滤JSON

时间:2018-11-22 11:57:30

标签: json react-native

这是我的本地JSON文件(JsonData.json):

{
  "Phone": [
    {
      "num": "phone1",
      "name": "galaxy",
      "temp": [
        "5",
        "6"
      ],
      "id": 1
    },
    {
      "num": "phone2",
      "name": "iPhone",
      "temp": [
        "4",
        "5",
        "6"
      ],
      "id": 2
    },
  …
  ],

  "Computer": [
    {
      "num": "computer1",
      "name": "Mac",
      "temp": [
        "1"
      ],
      "id": 1
    },
    {
      "num": "computer2",
      "name": "Samsung",
      "temp": [
        "4"
      ],
      "id": 2
    },
  …
  ]
}  

我以这种方式导入了它(我一直在正确使用它):

var JsonData = require('./JsonData.json');

我想从电话和计算机数据中获取temp = "4"时的名称(星系,iPhone ...)。

我如何获得它们?

2 个答案:

答案 0 :(得分:0)

此代码将帮助您解析JSON

function loopObj(value, array){
    let keyList = Object.keys(array)
    var namesArray = []
    for (var i = 0; i < keys.length; i++) {
       let arrayVal = a[keys[i]];
       for (var j = 0; j < arrayVal.length; j++) {
          var innerArray = arrayVal[j]
          if (innerArray.temp.indexOf(value) >= 0) {
              namesArray.push(innerArray.name)
          }
       }
    }
   return(namesArray)
}

loopObj("4", a) // will give you the array ["iPhone", "Samsung"]

答案 1 :(得分:0)

尝试一下:

const newArray = [...JsonData["Phone"], ...JsonData["Computer"]];
const result = newArray.filter(item => {
  if(item.temp.indexOf("4") !== -1) return item.name;
});

结果将是:[“ iPhone”,“ Samsung”]。