Referencing a javascript object literal array

后端 未结 5 1864
旧时难觅i
旧时难觅i 2021-02-08 22:57

How would you reference the models (Accord, CRV, Prius, etc) in this structure? Is this a bad structure to be able to extract the makes...then use a make to get the models...th

相关标签:
5条回答
  • 2021-02-08 23:33

    You can traverse models with this code:

    for (var i = 0, carslen = cars.length; i < carslen; i++) {
        for (var j = 0, modelslen = cars[i].models.length; j < modelslen; j++) {
            // do something with cars[i].models[j]
        }
    }
    

    but I agree with Olliej about changing the structure of your JSON to his format.

    0 讨论(0)
  • 2021-02-08 23:36

    Jonathan's is correct, but he missed the additional level of Array's at the model level, so it should be

     cars[0].models[0].Accord
     cars[0].models[1].CRV
    

    etc

    I suspect you would find it easier to use a structure along the lines of:

    var cars = [
    {makes  : "Honda",
     models  : {
        Accord : ["2dr","4dr"],
        CRV  : ["2dr","Hatchback"],
        Pilot: ["base","superDuper"]  
     }
    }, 
    {makes   :"Toyota",
     models  : {
        Prius   : ["green","reallyGreen"],
        Camry   : ["sporty","square"],
        Corolla : ["cheap","superFly"]
     }
    }];
    

    In which the models array is replaced by an object (or associative array if you like)

    [edit (olliej): tidying up code in second example]

    0 讨论(0)
  • 2021-02-08 23:39

    cars[0].models.Accord cars[0].models.CRV cars[0].models.Pilot (See olliej's answer)

    Though, it may be easier to use the following access concept:

    cars.Honda.Accord
    cars.Toyota.Prius
    

    ...using...

    var cars = {
      Honda : {
        Accord : ["2dr", "4dr"],
        CRV    : ["2dr", "Hatchback"],
        Pilot  : ["base", "superDuper"]
      },
      Toyota : {
        Prius : ["green", "reallyGreen"],
        Camry : ["sporty", "square"],
        Corolla : ["cheap", "superFly"]
      }
    };
    
    0 讨论(0)
  • 2021-02-08 23:40

    The structure:

    var cars = [
        { name: 'Honda', models: [
                    { name: 'Accord', features: ['2dr', '4dr'] },
                    { name: 'CRV', features: ['2dr', 'Hatchback'] },
                    { name: 'Pilot', features: ['base', 'superDuper'] }
            ]},
    
        { name: 'Toyota', models: [
                    { name: 'Prius', features: ['green', 'superGreen'] },
                    { name: 'Camry', features: ['sporty', 'square'] },
                    { name: 'Corolla', features: ['cheap', 'superFly'] }
            ]}
    ];
    

    I wrote about the traversal and everything else here.

    0 讨论(0)
  • 2021-02-08 23:44

    If I were you, I wouldn't lump all your data into one big multidimensional array/object literal mess like that. I'd encapsulate each object and use methods to access the data. It'll mess with your brain a lot less.

    0 讨论(0)
提交回复
热议问题