简体   繁体   English

使用嵌套数组Javascript遍历Json Object

[英]Iterate through Json Object with nested Array Javascript

I need to iterate this json and push the values into an other array 我需要迭代此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"
        }
    ]
}
]

I made out with this 我弄清楚了

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)
    })

but only push one marcaModelo object into marcas array, if I replace marcaModelo[0] for marcaModelo[key] I get an undefined. 但仅将一个marcaModelo对象推入marcas数组中,如果我将marcaModelo [0]替换为marcaModelo [key],则会得到未定义。

I need something like this 我需要这样的东西

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

You need a nested loop for all the marcaModelo objects; 您需要为所有marcaModelo对象提供一个嵌套循环。 you can use .map() to return an array of the results of a function on each element.. It also doesn't seem like you need to use Object.entries() . 您可以使用.map()返回每个元素上的函数结果数组。似乎也不需要使用Object.entries() The original object is an array, you can use .forEach() directly on it. 原始对象是一个数组,可以直接在其上使用.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);
}

or 要么

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