映射复杂的javascript对象数组以获取值
我有一个大文件,显示了一个虚拟配方的营养数据 首先查看代码沙盒json 我想得到这个物体的总热量和营养成分 配方有一个Stuff数组,在Stuff数组中我们有2个item对象 每一项都有事实 事实是(维生素、营养、卡路里和其他) 每个事实都有价值 我尝试了许多嵌套的array.map高阶函数,例如,我得到了每个项目的卡路里,但问题是嵌套的map函数在一个单独的数组中返回每个卡路里值 我想按如下方式在数组中推送每个项(配方材料项)的值:映射复杂的javascript对象数组以获取值,javascript,json,dictionary,object,Javascript,Json,Dictionary,Object,我有一个大文件,显示了一个虚拟配方的营养数据 首先查看代码沙盒json 我想得到这个物体的总热量和营养成分 配方有一个Stuff数组,在Stuff数组中我们有2个item对象 每一项都有事实 事实是(维生素、营养、卡路里和其他) 每个事实都有价值 我尝试了许多嵌套的array.map高阶函数,例如,我得到了每个项目的卡路里,但问题是嵌套的map函数在一个单独的数组中返回每个卡路里值 我想按如下方式在数组中推送每个项(配方材料项)的值: const vitaminValues = [] const
const vitaminValues = []
const nutritionValues = []
const caloriesValues = []
const othersValues = []
如果我得到这个,我可以得到总热量,维生素,营养和其他信息
但是idk,如果你们有更好的想法,请帮助我:)谢谢
这是样本配方的JSON文件:
flatMap
是您的朋友。我不会说更多,直到你提供你的认真尝试。请说明你想要什么样的输出this@SohanPatil,正如我所说的,我想计算并得到一个样本中所有和每种物质的卡路里、营养、维生素和其他的总和,你们可以提供样本吗output@SohanPatil,我说谢谢,效果很好!维生素A值=[]维生素C值=[]维生素D值=[]维生素B6值=]钙值=]铁值=]钴胺素值=]镁值=]脂肪值=]胆固醇值=]钠值=]钾值=]碳水化合物值=]蛋白质值=[]@tafhim我已经编辑了向vitaminAValues
数组添加值的代码,您可以对其他维生素重复相同的操作
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);