3 回答

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

TA貢獻(xiàn)1155條經(jīng)驗 獲得超0個贊
因為您的數(shù)組由 dict 對象組成,所以您需要考慮到您需要迭代鍵。在不修改輸入的情況下,您可以使用以下代碼來處理數(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)驗 獲得超8個贊
您遇到的問題是因為您使用的頂級密鑰是唯一的。而不是命名您的鍵Audi,BMW等等。我會使用一個通用鍵make,并將其值設(shè)置為您的品牌。這樣,當(dāng)您執(zhí)行循環(huán)時,您每次都可以請求相同的密鑰:
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ù)對象中的關(guān)系,我鼓勵您考慮如何將此信息存儲在數(shù)據(jù)庫中,并以此為基礎(chǔ)組織您的組織。
有很多carBrands。每個carBrand都有一個make, unitsAvailable, 并且有很多models.
您不會為每個創(chuàng)建一個新表carBrand,對嗎?您將添加一個新行。因此,按照上面的方式構(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)驗 獲得超5個贊
這里的所有答案都是“正確的”,非常感謝你們!所以沒有一個比另一個更好。
我認(rèn)為喬納森對我過于復(fù)雜的數(shù)據(jù)結(jié)構(gòu)提出了一個很好的觀點。我將回到更簡單的版本,其中“Audi”等將是一個值,而不是一個鍵。
但我還將按照 Mottek 的建議構(gòu)建當(dāng)前結(jié)構(gòu)和訪問數(shù)據(jù)的示例。
當(dāng)我深入到項目中時,我將決定哪個是最終版本。
感謝大家的大力幫助!
添加回答
舉報