3 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊
carBrands.flatMap(Object.entries) .map(([key, { models, unitsAvailable }]) => `${key} ${models.join(", ")} ${unitsAvailable}`) .forEach(v => console.log(v))

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊
因?yàn)槟臄?shù)組由 dict 對(duì)象組成,所以您需要考慮到您需要迭代鍵。在不修改輸入的情況下,您可以使用以下代碼來處理數(shù)據(jù)結(jié)構(gòu)的內(nèi)部值:
// For all defined objects
carBrands.forEach((object) => {
// Determine manufacturers inside the current object (only 1 manufacturer per object in your case)
var manufacturers = Object.keys(object);
// For each manufacturer
manufacturers.forEach((manufacturer) => {
// Print manufacturer name
console.log("Manufacturer: " + manufacturer);
console.log("Models:");
// For all models
var models = object[manufacturer].models;
models.forEach((model) => {
// print model name
console.log(" " + model);
});
// print available units
console.log("Available units:");
console.log(" " + object[manufacturer].unitsAvailable + "\n");
});
});
輸出:
Manufacturer: Audi
Models:
A1
A2
A3
A4
Available units:
378
Manufacturer: BMW
Models:
M1
M2
M3
M4
Available units:
413
Manufacturer: Honda
Models:
H1
H2
H3
H4
Available units:
226

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊
您遇到的問題是因?yàn)槟褂玫捻敿?jí)密鑰是唯一的。而不是命名您的鍵Audi,BMW等等。我會(huì)使用一個(gè)通用鍵make,并將其值設(shè)置為您的品牌。這樣,當(dāng)您執(zhí)行循環(huán)時(shí),您每次都可以請(qǐng)求相同的密鑰:
const carBrands = [
{
make: 'Audi',
models: ["A1", "A2", "A3", "A4"],
unitsAvailable: 378
},
{
make: 'BMW',
models: ["M1", "M2", "M3", "M4"],
unitsAvailable: 413
},
];
carBrands.forEach(brand => {
console.log(brand.make);
brand.models.forEach(model => console.log(model));
});
由于您談到要維護(hù)對(duì)象中的關(guān)系,我鼓勵(lì)您考慮如何將此信息存儲(chǔ)在數(shù)據(jù)庫中,并以此為基礎(chǔ)組織您的組織。
有很多carBrands。每個(gè)carBrand都有一個(gè)make, unitsAvailable, 并且有很多models.
您不會(huì)為每個(gè)創(chuàng)建一個(gè)新表carBrand,對(duì)嗎?您將添加一個(gè)新行。因此,按照上面的方式構(gòu)建它更接近于將其保存在數(shù)據(jù)庫中的方式,這有利于數(shù)據(jù)完整性并使其更加靈活。
在這種結(jié)構(gòu)中,通過 make 獲取東西仍然很容易,例如:
let audiModels = carBrands.filter(brand => brand.make == 'Audi').models;

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊
這里的所有答案都是“正確的”,非常感謝你們!所以沒有一個(gè)比另一個(gè)更好。
我認(rèn)為喬納森對(duì)我過于復(fù)雜的數(shù)據(jù)結(jié)構(gòu)提出了一個(gè)很好的觀點(diǎn)。我將回到更簡(jiǎn)單的版本,其中“Audi”等將是一個(gè)值,而不是一個(gè)鍵。
但我還將按照 Mottek 的建議構(gòu)建當(dāng)前結(jié)構(gòu)和訪問數(shù)據(jù)的示例。
當(dāng)我深入到項(xiàng)目中時(shí),我將決定哪個(gè)是最終版本。
感謝大家的大力幫助!
添加回答
舉報(bào)