嵌套对象文字返回所有属性作为长度?

Nested object literal returning all properties as length?

在 JSON 我有不同的 sucursales(locations),每个都有不同的 autos(cars)。如何在一个函数中获取所有位置的汽车总数?

[{"sucursal": "Quilmes",
    "direccion": "Av. Hipólito Yrigoyen 80, B1878 Quilmes, Provincia de Buenos Aires",
    "telefono": "(0230) 466-3000",
    "autos": [{
            "marca": "chevrolet",
            "modelo": "camaro",
            "anio": 20120,
            "color": "black"
        },
        {
            "marca": "nissan",
            "modelo": "note",
            "anio": 2020,
            "color": "white"
        },

        {
            "marca": "chevrolet",
            "modelo": "onix",
            "anio": 2019,
            "color": "red"
        },
        {
            "marca": "volkswagen",
            "modelo": "scirocco",
            "anio": 2015,
            "color": "white"
        },
        {
            "marca": "volkswagen",
            "modelo": "golf",
            "anio": 2016,
            "color": "white"
        },
        {
            "marca": "nissan",
            "modelo": "sentra",
            "anio": 2017,
            "color": "black"
        },
        {
            "marca": "citroen",
            "modelo": "c4",
            "anio": 2020,
            "color": "gray"
        },
        {
            "marca": "citroen",
            "modelo": "berlingo",
            "anio": 2020,
            "color": "gray"
        },
        {
            "marca": "peugeot",
            "modelo": "208",
            "anio": 2020,
            "color": "gray"
        },
        {
            "marca": "fiat",
            "modelo": "fiorino",
            "anio": 2020,
            "color": "gray"
        },
        {
            "marca": "toyota",
            "modelo": "etios",
            "anio": 2020,
            "color": "gray"
        },
        {
            "marca": "ford",
            "modelo": "ecosport",
            "anio": 2015,
            "color": "red"
        },
        {
            "marca": "chery",
            "modelo": "tiggo",
            "anio": 2020,
            "color": "gray"
        },
        {
            "marca": "renault",
            "modelo": "sandero",
            "anio": 2020,
            "color": "gray"
        }
    ]
},
{
    "sucursal": "San Miguel",
    "direccion": "Av. Pres. Juan Domingo Perón 2043, B1663 San Miguel, Provincia de Buenos Aires",
    "telefono": "(011) 4451-5565",
    "autos": [{
            "marca": "nissan",
            "modelo": "note",
            "anio": 2018,
            "color": "red"
        },
        {
            "marca": "chevrolet",
            "modelo": "camaro",
            "anio": 2018,
            "color": "white"
        },
        {
            "marca": "chevrolet",
            "modelo": "onix",
            "anio": 2016,
            "color": "gray"
        },
        {
            "marca": "honda",
            "modelo": "civic",
            "anio": 2020,
            "color": "black"
        },
        {
            "marca": "audi",
            "modelo": "a6",
            "anio": 2016,
            "color": "red"
        },
        {
            "marca": "nissan",
            "modelo": "x-trail",
            "anio": 2016,
            "color": "gray"
        },
        {
            "marca": "peugeot",
            "modelo": "2008",
            "anio": 2020,
            "color": "green"
        },
        {
            "marca": "toyota",
            "modelo": "hilux",
            "anio": 2020,
            "color": "gray"
        },
        {
            "marca": "volkswagen",
            "modelo": "saveiro",
            "anio": 2020,
            "color": "blue"
        },
        {
            "marca": "fiat",
            "modelo": "golf",
            "anio": 2020,
            "color": "gray"
        },
        {
            "marca": "fiat",
            "modelo": "palio",
            "anio": 2017,
            "color": "white"
        },
        {
            "marca": "peugeot",
            "modelo": "307",
            "anio": 2020,
            "color": "gray"
        },
        {
            "marca": "renault",
            "modelo": "sandero",
            "anio": 2020,
            "color": "gray"
        }
    ]
}

]

在不同的 js 中,我可以列出所有位置的所有汽车,但我似乎不能只给出总数。

let carList=dataBase.forEach((concesionarias) => {
        concesionarias.autos.forEach((auto) => {
            res.write("   - " + auto.marca + " - " + auto.modelo + " - " + auto.anio + " - " + auto.color + "\n")})
    })

如果您想计算所有位置的所有汽车的总数量,您可以做一个简单的 .reduce(),从总数量 0 开始,然后加上每辆汽车的长度autos 数组。这是一个减少数据集的例子:

const dataBase = [
    {
        "sucursal": "Quilmes",
        "direccion": "Av. Hipólito Yrigoyen 80, B1878 Quilmes, Provincia de Buenos Aires",
        "telefono": "(0230) 466-3000",
        "autos": [
            {
                "marca": "chevrolet",
                "modelo": "camaro",
                "anio": 20120,
                "color": "black"
            },
            {
                "marca": "renault",
                "modelo": "sandero",
                "anio": 2020,
                "color": "gray"
            }
        ]
    },
    {
        "sucursal": "San Miguel",
        "direccion": "Av. Pres. Juan Domingo Perón 2043, B1663 San Miguel, Provincia de Buenos Aires",
        "telefono": "(011) 4451-5565",
        "autos": [
            {
                "marca": "nissan",
                "modelo": "note",
                "anio": 2018,
                "color": "red"
            }
        ]
    }
];

const totalCount = dataBase.reduce((prev,curr) => {
   return prev + curr.autos.length;
},0)
console.log(`There are ${totalCount} cars in total.`);