[英]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.