我有一个大文档,其中显示了虚拟食谱的营养数据。
先看codesandbox json
我想获取该物体的总热量和营养成分;
recipe 有一个 stuff 数组,在 stuffs 数组中我们有 2 个项目对象;
每一项都有事实(facts);
事实是(维生素、营养、卡路里和其他)
每个事实都有值(value);
我尝试了许多嵌套的 array.map 高阶函数,例如我得到了每个项目的卡路里,但问题是嵌套的 map 函数在单独的数组中返回每个卡路里值...
我想将每个项目(食谱项目)的值推送到数组中,如下所示:
const vitaminValues = []
const nutritionValues = []
const caloriesValues = []
const othersValues = []
如果我得到这个,我可以获得总热量、维生素、营养和其他信息
但是我不知道,如果你们有更好的想法请帮助我:)谢谢
这是示例配方的 JSON 文件:https://codesandbox.io/s/relaxed-brown-zrxnr?fontsize=14&hidenavigation=1&theme=dark
最佳答案
let data=//your json
let vitaminValues = [];
let nutritionValues = [];
let caloriesValues = [];
let othersValues = [];
let vitaminAValues = [];
function getValuesFromJson(obj, Arr) {
Object.entries(obj).map(
vitamin => vitamin[1].hasOwnProperty("value") && Arr.push(vitamin[1].value)
);
}
data.map(d =>
d.stuffs.map(stuff =>
stuff.item.fact.map(f => {
getValuesFromJson(f.vitamins, vitaminValues);
getValuesFromJson(f.others, othersValues);
caloriesValues.push(f.calories);
f.nutritions.map(nutri => getValuesFromJson(nutri, nutritionValues));
vitaminAValues.push(f.vitamins.A.value);
})
)
);
console.log("vitaminValues", vitaminValues);
console.log("nutritionValues", nutritionValues);
console.log("othersValues", othersValues);
console.log("caloriesValues", caloriesValues);
console.log("vitaminAValues", vitaminAValues);
关于javascript - 映射复杂的 JavaScript 对象数组以获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61555328/