如何在JSON结果中获取特定数据

时间:2019-06-15 17:48:44

标签: javascript json angular

这是我的汽车“模型”的JSON结果:

[
    {
        "idModele":1,
        "modele":"M3",
        "marque":{
            "idMarque":1,
            "marque":"BMW"
        }
    },
    {
        "idModele":2,
        "modele":"RS6",
        "marque":{
            "idMarque":2,
            "marque":"Audi"
        }
    },
    {
        "idModele":3,
        "modele":"C63 AMG",
        "marque":{
            "idMarque":3,
            "marque":"Mercedes"
        }
    },
    {
        "idModele":4,
        "modele":"Clio RS Trophy",
        "marque":{
            "idMarque":4,
            "marque":"Renault"
        }
    },
    {
        "idModele":5,
        "modele":"Scirocco Type R",
        "marque":{
            "idMarque":5,
            "marque":"Volkswagen"
        }
    },
    {
        "idModele":6,
        "modele":"118d",
        "marque":{
            "idMarque":1,
            "marque":"BMW"
        }
    }
]

我只想获取具有“ idMarque:1”(BMW)的“模型”(结果是它们具有2个“模型”),但我不知道该怎么做。

我的后端:带有SpringBoot的API REST 我的前端:角度

4 个答案:

答案 0 :(得分:0)

假设json数组存储在变量result中,您可以简单地:

  1. 遍历json数组。
  2. 检查每个json对象是否符合所需条件。

    for (let i = 0; i < result.length; i++) {
       if (result[i].marque.idMarque === 1) {
         console.log('Found it ', result[i]);
       }
    }
    

更简单:

result.filter(e => e.marque.idMarque === 1);

答案 1 :(得分:0)

首先,为澄清起见,这是一个JavaScript问题。后端或前端是什么都没关系。

回答您的问题,您可以过滤结果以仅获取所需的元素:

filteredCars = cars.filter(car => car.marque.idMarque === 1)

这将用marque.idMarque = 1过滤汽车。

您可以在docs上找到有关filter功能的信息。

答案 2 :(得分:0)

您可以使用过滤器运算符获取具有idMarque:1的模型。例如,您在 result 类变量中获得JSON结果。然后,您可以按以下方式使用过滤器。

let BMWCars = this.result.filter(e => e.marque.idMarque == 1);

答案 3 :(得分:0)

如果您已搜索对象值,那么检查是个好主意,因此:

let filtered = models
    .filter(item => item.marque && item.marque.idMarque 
    ? item.marque.idMarque === 1 
    : '')

在这种情况下,如果未收到错误消息,则服务器响应中缺少Marque键。