簡體   English   中英

使用嵌套數組Javascript遍歷Json Object

[英]Iterate through Json Object with nested Array Javascript

我需要迭代此json並將值推入另一個數組

[
{
    "id": 1,
    "nombre": "Samson",
    "marcaModelo": [
        {
            "id": 6,
            "nombre": "API 6D "
        }
    ]
}
{
    "id": 6,
    "nombre": "Endress + Hauser",
    "marcaModelo": [
        {
            "id": 10,
            "nombre": "Proline t-mass 65F50-AK2AH1RCBBCA"
        },
        {
            "id": 8,
            "nombre": "Cerabar M"
        }
    ]
}
]

我弄清楚了

Object.entries(res).forEach((value, key) => {
      console.log(key, value)
      this.marcas.push({
        'marcaId': res[key].id,
        'marcaNombre': res[key].nombre,
        'modeloId': res[key].marcaModelo[0].id,
        'modeloNombre': res[key].marcaModelo[0].nombre
      })
      console.log(this.marcas)
    })

但僅將一個marcaModelo對象推入marcas數組中,如果我將marcaModelo [0]替換為marcaModelo [key],則會得到未定義。

我需要這樣的東西

{
marcaId:6
marcaNombre:"Endress + Hauser"
modeloId:[10, 8]
modeloNombre:[Proline t-mass 65F50-AK2AH1RCBBCA, Cerabar M]
}

您需要為所有marcaModelo對象提供一個嵌套循環。 您可以使用.map()返回每個元素上的函數結果數組。似乎也不需要使用Object.entries() 原始對象是一個數組,可以直接在其上使用.forEach()

res.forEach(value => {
    console.log(value);
    this.marcas.push({
        'marcaId': value.id,
        'marcaNombre': value.nombre,
        'modeloId': value.marcaModelo.map(o => o.id),
        'modeloNombre': value.marcaModelo.map(o => o.nombre)
    });
    console.log(this.marcas);
}

要么

res.map(({ id, nombre, marcaModelo }) => ({
    marcaId: id,
    marcaNombre: nombre,
    modeloId: marcaModelo.map(m => m.id),
    modeloNombre: marcaModelo.map(m => m.nombre),
}));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM