我想創建嵌套的 json 結構,但我不能。我想做如圖所示。一些嵌套的部分將是物件和陣列。這是一個非常困難和復雜的示意圖,所以需要幫助我如何在 Javascript 中做到這一點
架構:
{
"name": "title",
"img": "image_url",
"food_kcal": "food_kcal",
"units": [
{
"unit": "test1",
"data": {
"amount": "90.0000",
"calcium": "5.4",
"calory": "46.8"
}
},
{
"unit": "test2",
"data": {
"amount": "150.0000",
"calcium": "9.0",
"calory": "78.0"
}
},
{
"unit": "test3",
"data": {
"amount": "100.0000",
"calcium": "6.0",
"calory": "52.0"
}
}
]
}
我的代碼:
var jsonObj = {
"food_name":"title",
"food_image":"image",
"food_kcal":"kcal_data",
"units":[]
};
for (var i = 0; i < unit_list.length; i ) {
var unit = {};
var dataObj={};
unit.food_unit = unit_list[i].text;
var option = document.getElementsByTagName("option")[i];
dataObj.amount= option.dataset.amount;
dataObj.calcium= option.dataset.calcium;
dataObj.calory= option.dataset.calory;
jsonObj.units.push(unit);
jsonObj.units.push(dataObj);
}
var string = JSON.stringify(jsonObj);
console.log(JSON.parse(string));
uj5u.com熱心網友回復:
每次通過回圈,您應該只將一個推入陣列,而不是兩個。該物件應包含unit和dataObj作為嵌套屬性。
改變
jsonObj.units.push(unit);
jsonObj.units.push(dataObj);
到
jsonObj.units.push({
unit: unit_list[i].text,
data: dataObj
}
不需要unit變數。
uj5u.com熱心網友回復:
問題是因為您將單獨的值推送到陣列,而不是包含它們的物件。
話雖如此,代碼可以通過使用map()來簡化:
// for demo only:
let unit_list = [{ text: 'grams' }, { text: 'kilograms' }, { text: 'mililitres' }];
let obj = {
food_name: "title",
food_image: "image",
food_kcal: "kcal_data",
units: unit_list.map((item, i) => {
var option = document.getElementsByTagName("option")[i];
return {
food_unit: item.text,
units: {
amount: option.dataset.amount,
calcium: option.dataset.calcium,
calory: option.dataset.calory
}
}
})
};
console.log(obj);
<select>
<option data-amount="1" data-calcium="10" data-calory="100">A</option>
<option data-amount="2" data-calcium="20" data-calory="200">B</option>
<option data-amount="3" data-calcium="30" data-calory="300">C</option>
</select>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/402444.html
標籤:
上一篇:計數位給出不是預期的輸出
