簡體   English   中英

引用javascript對象文字數組

[英]Referencing a javascript object literal array

你會如何在這個結構中引用模型(Accord,CRV,Prius等)? 這是一個糟糕的結構,能夠提取制作...然后使用make來獲取模型...然后使用模型來獲取選項?

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"] }
        ]
    }
];              

謝謝

結構:

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'] }
        ]}
];

在這里寫了關於遍歷和其他一切的文章。

汽車[0] .models.Accord汽車[0] .models.CRV汽車[0] .models.Pilot (見olliej的回答)

但是,使用以下訪問概念可能更容易:

cars.Honda.Accord
cars.Toyota.Prius

使用......

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

Jonathan是正確的,但他在模型級錯過了額外的Array級別,所以它應該是

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

等等

我懷疑你會發現使用以下結構的結構更容易:

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"]
 }
}];

其中models數組被一個對象(或者你喜歡的關聯數組)替換

[編輯(olliej):在第二個例子中整理代碼]

您可以使用以下代碼遍歷模型:

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

但我同意Olliej關於將JSON的結構更改為他的格式。

如果我是你,我不會把你的所有數據都歸結為一個大的多維數組/對象文字混亂。 我將封裝每個對象並使用方法來訪問數據。 它會讓你的大腦更加糟糕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM