Estoy tratando de construir en Javascript una tabla de valores nutricionales, cantidad y porcentaje diario. He guardado datos JSON de esta manera:
data : [ { "recipe": { "totalNutrients": { "ENERC_KCAL": { "label": "Energy", "quantity": 122.67497750000001, "unit": "kcal" }, "K": { "label": "Potassium", "quantity": 255.9084202548212, "unit": "mg" }, "FAT": { "label": "Fat", "quantity": 11.89368915, "unit": "g" }, "ZN": { "label": "Zinc", "quantity": 0.328366321935265, "unit": "mg" }, "FIBTG": { "label": "Fiber", "quantity": 3.609618250000001, "unit": "g" }, "SUGAR": { "label": "Sugars", "quantity": 0.5078356, "unit": "g" } } } }]Quiero obtener ENERC_KCAL, FAT y los demás valores en la matriz "KEYS" de los datos JSON.
keys = ['ENERC_KCAL', 'FAT', 'CHOCDF', 'FITBG', 'SUGAR', 'PROCNT', 'CHOLE', 'NA']; valNut = data[0].recipe.totalNutrients;¿Hay alguna manera de lograr la siguiente instrucción:
energyValue = valNut.ENERC_KCAL.quantity + ' ' + valNut.ENERC_KCAL.unitusando en su lugar los valores de la matriz en un bucle?
for(h=0; h<keys.length; h++){ energyValue = valNut.keys[h].quantity + ' ' + valNut.keys[h].unit }Para hacer lo que necesita, puede recorrer las keys usando map() para construir una nueva matriz de los objetos clave correspondientes de totalNutrients . Algo como esto:
let data = [{recipe:{totalNutrients:{ENERC_KCAL:{label:"Energy",quantity:122.67497750000001,unit:"kcal"},K:{label:"Potassium",quantity:255.9084202548212,unit:"mg"},FAT:{label:"Fat",quantity:11.89368915,unit:"g"},ZN:{label:"Zinc",quantity:.328366321935265,unit:"mg"},FIBTG:{label:"Fiber",quantity:3.609618250000001,unit:"g"},SUGAR:{label:"Sugars",quantity:.5078356,unit:"g"}}}}]; let keys = ['ENERC_KCAL', 'FAT', 'CHOCDF', 'FITBG', 'SUGAR', 'PROCNT', 'CHOLE', 'NA']; let filteredNutrientData = keys.map(key => data[0].recipe.totalNutrients[key]).filter(v => v); console.log(filteredNutrientData); Tenga en cuenta que el filtro final .filter(v => v) es para eliminar los valores undefined que resultan de buscar una clave inexistente en el objeto totalNutrients .