{
    "brands": [
        {
            "name": "CarBrand1",
            "models": [
                {
                    "name": "CarModel1"
                },
                {
                    "name": "CarModel2"
                },
                {
                    "name": "CarModel3"
                }
            ]
        },
        {
            "name": "CarBrand2",
            "models": [
                {
                    "name": "CarModel1"
                },
                {
                    "name": "CarModel2"
                },
                {
                    "name": "CarModel3"
                }
            ]
        }
    ]
}


我有一个像这样的JSON,我想进入CarBrand1以获得CarBrand1的所有汽车模型。我可以

json.brands[0]


获得CarBrand1汽车模型或

json.brands[1]


获得CarBrand2汽车模型。但是,如果我想通过品牌名称值(“名称”:“ CarBrand2”)获得CarBrand2汽车型号怎么办?

就像是

json.brands['CarBrand1']


(当然,这不是正确的方法)

最佳答案

如果没有迭代和比较,就没有简单的方法可以通过属性名称访问对象。我猜最简单的方法是使用find函数:

json.brands.find((c) => c.name == "CarBrand1")


请注意,如果您经常需要按名称访问品牌,建议您创建某种查找字典。例如:

lookup = [];
js.brands.forEach((c, i) => lookup[c.name] = c)

lookup["CarBrand1"] // --> {name: "CarBrand1", models: Array(4)}

07-28 10:57