3 回答

TA貢獻2012條經驗 獲得超12個贊
首先,我糾正了你的json。之后,我迭代 json 對象的鍵以創建 defaultValues 對象。在您的嘗試中,您一直將對象視為數組。只有數組有 push 方法。
const json = {
"meat": {
"drink":"Bovril",
"courses":{
"main":"chicken",
"pudding":"jelly"
}
},
"vegetarian":{
"drink":"milkshake",
"courses":{
"main":"cheese",
"pudding":"ice cream"
}
},
"vegan":{
"drink":"spinach juice",
"courses":{
"main":"lettuce",
"pudding":"apple"
}
}
};
const defaultValues = {};
Object.keys(json).forEach(e => {
defaultValues[e] = json[e]["courses"].main;
});
console.log(defaultValues);

TA貢獻1871條經驗 獲得超13個贊
不完全確定我是否正確閱讀了您的問題,但是如果您嘗試生成
const defaultValues: {
meat: "chicken",
vegetarian: "cheese",
vegan: "lettuce"
}
從這個 json 對象 - (通過驗證器將其卡住,結果并不滿意,這是更正的格式)
const Json= {
"meat": {"drink": "Bovril","courses": {"main": "chicken","pudding": "jelly"}},
"vegetarian": {"drink": "milkshake","courses": {"main": "cheese","pudding": "ice cream"}},
"vegan": {"drink": "spinach juice","courses": {"main": "lettuce","pudding": "apple"}}
}
然后下面應該工作
const json = Json; //this contains the contents of my json file above
const defaultValues = {};
Object.keys(json).forEach(function(key) {
defaultValues[key] = json[key].courses.main;
});

TA貢獻1796條經驗 獲得超10個贊
您收到錯誤的原因是因為您在對象上使用了數組方法。您的 defaultValues 是一個對象 {}
另一個問題是 json 是一個字符串,您需要先將字符串解析為一個對象。您還缺少一些 json 上的端花括號。
這是我對您的代碼的看法:
const json = `{
"meat": {
"drink": "Bovril", "courses": { "main": "chicken", "pudding": "jelly" }},
"vegetarian": {
"drink": "milkshake", "courses": { "main": "cheese", "pudding": "ice cream" }},
"vegan": {
"drink": "spinach juice", "courses": { "main": "lettuce", "pudding": "apple" }}
}`;
const menu = JSON.parse(json)
const defaultValues = {};
Object.entries(menu).forEach(function (entry) {
defaultValues[entry[0]] = entry[1].courses.main;
});
console.log(defaultValues) // -> Object {meat: "chicken", vegetarian: "cheese", vegan: "lettuce"}
Object.entries 返回一個包含對象鍵長度的數組以及一個包含鍵和值的數組。因此,只需使用 entry[0] 作為鍵和 entry[1] 作為值將它們映射到 defaultValues。
添加回答
舉報